我目前在我的控制器中有這個作業:
use App\Models\Organisation;
use App\Models\User;
public function show(User $user)
{
$orgs = Organisation::with([
'users' => function ($query) use ($user) {
$query->where('user_id', '=', $user->id)
->orWhereNull('user_id');
}
])
->get();
dd($orgs);
}
我想盡可能多地使用動態區域范圍移動到模型。我試過了:
public function scopeAllOrgsOneUserMemberOrNot($query, $user)
{
$query->where('user_id', '=', $user->id)->orWhereNull('user_id');
}
但是當我運行時:
public function show(User $user)
{
$orgs = Organisation::with(['users' => function ($query) use ($user) {
$query->AllOrgsOneUserMemberOrNot($query, $user);
}])->get();
dd($orgs);
}
我得到以下錯誤例外:
Undefined property: Illuminate\Database\Eloquent\Relations\BelongsToMany::$id
如何將此查詢構建器片段移動到范圍?
uj5u.com熱心網友回復:
不需要傳遞作用域的第一個引數。檢查檔案中的示例。function scopeActive($query) { ... }變成active().
$query->AllOrgsOneUserMemberOrNot($user);
這應該有效。
轉載請註明出處,本文鏈接:https://www.uj5u.com/ruanti/326503.html
