我有一个名为Abandoned on my Deal模型的全局范围,有助于隐藏没有足够用户输入的交易,值得与之互动。
问题是,交易在创建时自动处于废弃状态,用户仍需要能够与其进行交互,包括调用包含交易的各种API网址,例如
Route::post('deals/{deal}/notes', 'DealController@add_note');
我希望能够使用魔术路由键查找,以便控制器方法可以像:
public function add_note(Request $request, Deal $deal)
但是,如果我像这样编写控制器,则无法为任何被放弃的交易添加注释。 (你得到404)
我发现的唯一解决方法是编写每个控制器,如:
public function add_note(Request $request, $deal_id){
$deal = Deal::withAbandoned()->find($deal_id);
感觉就像是期望不匹配 - 应用程序想要隐藏所有列表和报告中隐藏的被放弃的交易,但如果您知道“按名称”(主键)的交易,那么您可以继续采取行动。
答案 0 :(得分:0)
答案here对我有用。我用来在Model
中设置全局范围use Illuminate\Database\Eloquent\Builder;
....
public static function boot() {
static::addGlobalScope('order', function (Builder $builder) {
$builder->orderBy('active', 'desc')->orderBy('name', 'asc')-
>orderBy('surname', 'asc');
});
}
而且,如果我需要排除它,我可以:
MyModel::withoutGlobalScope('order')->get();
由于它与list方法一起使用,或者填充select2,从未想过编辑/删除...似乎是一个有用的加法,为我+1;