我已使用模型的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_table
和table2
都有一个具有相同名称name
的列。因此,当我尝试MyModel::firstOrCreate()
时,我得到:
违反完整性约束:1052 where子句中的“名称”列不明确
我喜欢为模型的所有实例全局设置顺序的方法,但也喜欢firstOrCreate
功能:(。
我尝试过:
MyModel::firstOrCreate(['this_table.name' => $request->input('name')]);
但它不起作用。
我的问题是如何在不丢失其他Laravel功能的情况下全局设置模型的顺序?