【问题标题】:Add joins by default to Laravel model默认添加连接到 Laravel 模型
【发布时间】:2019-10-07 05:49:56
【问题描述】:

我在我的 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();

能不能把代码整理一下,用最后一种方式写?

【问题讨论】:

    标签: php laravel eloquent laravel-6


    【解决方案1】:

    改一下

    $stock = Stock::scopeJoinStocksQuery();
    

    $stock = Stock::joinStocksQuery();
    

    使用作用域时,您在方法名称中省略了 scope 前缀,请参阅有关 local scopes 的更多信息。

    【讨论】:

    • 应该是Stock::joinStocksQuery()
    猜你喜欢
    • 2015-12-31
    • 2020-01-13
    • 2021-09-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-08-13
    • 2021-01-18
    相关资源
    最近更新 更多