默认情况下,将连接添加到 Laravel 模型



我在我的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前缀,请参阅有关本地作用域的详细信息。

最新更新