使用Model的全局范围进行排序(使用联接)和firstOrCreate

时间:2018-12-15 20:30:58

标签: php laravel laravel-5.7

我已使用模型的addGlobalScopes()为我的模型之一设置默认顺序:

public static function boot()
{
    parent::boot();
    /** Some code */
    static::addGlobalScope('order', function (Builder $builder) {
        $builder->select('this_table.*') //this is the same table as the model
            ->leftJoin('table2', 'table2.table_id', '=', 'this_table.id')
            ->groupBy('this_table.id')
            ->orderBy('table2.year', 'DESC');
    });
    /** Some other code */
}

但是this_tabletable2都有一个具有相同名称name的列。因此,当我尝试MyModel::firstOrCreate()时,我得到:

  

违反完整性约束:1052 where子句中的“名称”列不明确

我喜欢为模型的所有实例全局设置顺序的方法,但也喜欢firstOrCreate功能:(。

我尝试过:

MyModel::firstOrCreate(['this_table.name' => $request->input('name')]);

但它不起作用。

我的问题是如何在不丢失其他Laravel功能的情况下全局设置模型的顺序?

0 个答案:

没有答案