Files
snipe-it/app/models/Model.php
T
2015-10-21 14:48:59 -07:00

111 lines
3.1 KiB
PHP
Executable File

<?php
class Model extends Elegant
{
use SoftDeletingTrait;
protected $dates = ['deleted_at'];
protected $table = 'models';
// Declare the rules for the form validation
protected $rules = array(
'name' => 'required|alpha_space|min:2|max:255|unique:models,deleted_at,NULL',
'modelno' => 'alpha_space|min:1|max:255',
'category_id' => 'required|integer',
'manufacturer_id' => 'required|integer',
'eol' => 'required|integer:min:0|max:240',
'user_id' => 'integer',
);
public function assets()
{
return $this->hasMany('Asset', 'model_id');
}
public function category()
{
return $this->belongsTo('Category', 'category_id');
}
public function depreciation()
{
return $this->belongsTo('Depreciation','depreciation_id');
}
public function adminuser()
{
return $this->belongsTo('User','user_id');
}
public function manufacturer()
{
return $this->belongsTo('Manufacturer','manufacturer_id');
}
/**
* -----------------------------------------------
* BEGIN QUERY SCOPES
* -----------------------------------------------
**/
/**
* Query builder scope for Deleted assets
*
* @param Illuminate\Database\Query\Builder $query Query builder instance
* @return Illuminate\Database\Query\Builder Modified query builder
*/
public function scopeDeleted($query)
{
return $query->whereNotNull('deleted_at');
}
/**
* scopeInCategory
* Get all models that are in the array of category ids
*
* @param $query
* @param array $categoryIdListing
*
* @return mixed
* @author Vincent Sposato <vincent.sposato@gmail.com>
* @version v1.0
*/
public function scopeInCategory( $query, array $categoryIdListing )
{
return $query->whereIn( 'category_id', $categoryIdListing );
}
/**
* Query builder scope to search on text
*
* @param Illuminate\Database\Query\Builder $query Query builder instance
* @param text $search Search term
*
* @return Illuminate\Database\Query\Builder Modified query builder
*/
public function scopeTextSearch($query, $search)
{
return $query->where('name', 'LIKE', "%$search%")
->orWhere('modelno', 'LIKE', "%$search%")
->orWhere(function($query) use ($search) {
$query->whereHas('depreciation', function($query) use ($search) {
$query->where('name','LIKE','%'.$search.'%');
});
})
->orWhere(function($query) use ($search) {
$query->whereHas('category', function($query) use ($search) {
$query->where('name','LIKE','%'.$search.'%');
});
})
->orWhere(function($query) use ($search) {
$query->whereHas('manufacturer', function($query) use ($search) {
$query->where('name','LIKE','%'.$search.'%');
});
});
}
}