默认将连接添加到 Laravel 模型
Add joins by default to Laravel model
我在我的 Laravel 模型中创建了一个方法,它向查询构建器添加了一些 leftJoins
,但我想知道是否有更好的调用方法。
我的模特:
class Stock extends Model
{
protected $primaryKey = 'stock_id';
static public function scopeJoinStocksQuery($query){
return $query->leftJoin('parts','parts.part_id','=','stocks.part_id')->leftJoin('colors','colors.color_id','=','stocks.color_id');
}
}
我现在调用模型的方式:
$stock = new Stock;
$stock = Stock::scopeJoinStocksQuery($stock);
if($input){
$stock->where('model','LIKE','%'.$input.'%');
}
$stocks = $stock->offset(10)
->limit(50)
->orderBy('model', 'asc')
->get();
我希望的写作方式:
$stock = Stock::scopeJoinStocksQuery();
if($input){
$stock->where('model','LIKE','%'.$input.'%');
}
$stocks = $stock->offset(10)
->limit(50)
->orderBy('model', 'asc')
->get();
能不能把代码整理一下,用最后的方式写?
改变这个
$stock = Stock::scopeJoinStocksQuery();
到
$stock = Stock::joinStocksQuery();
使用范围时,您从方法名称中省略了 scope
前缀,请参阅有关 local scopes 的更多信息。
我在我的 Laravel 模型中创建了一个方法,它向查询构建器添加了一些 leftJoins
,但我想知道是否有更好的调用方法。
我的模特:
class Stock extends Model
{
protected $primaryKey = 'stock_id';
static public function scopeJoinStocksQuery($query){
return $query->leftJoin('parts','parts.part_id','=','stocks.part_id')->leftJoin('colors','colors.color_id','=','stocks.color_id');
}
}
我现在调用模型的方式:
$stock = new Stock;
$stock = Stock::scopeJoinStocksQuery($stock);
if($input){
$stock->where('model','LIKE','%'.$input.'%');
}
$stocks = $stock->offset(10)
->limit(50)
->orderBy('model', 'asc')
->get();
我希望的写作方式:
$stock = Stock::scopeJoinStocksQuery();
if($input){
$stock->where('model','LIKE','%'.$input.'%');
}
$stocks = $stock->offset(10)
->limit(50)
->orderBy('model', 'asc')
->get();
能不能把代码整理一下,用最后的方式写?
改变这个
$stock = Stock::scopeJoinStocksQuery();
到
$stock = Stock::joinStocksQuery();
使用范围时,您从方法名称中省略了 scope
前缀,请参阅有关 local scopes 的更多信息。