我有这个模型
class Permission extends Model
{
public function details(): MorphToMany
{
return $this->morphedByMany('App\Models\Details', 'model', 'model_has_permissions', 'permission_id', 'model_id');
}
}
class Details extends Model
{
public function permission()
{
return $this->morphedByMany('App\Models\Permission','model','model_has_permissions','model_id','permission_id');
}
}
我执行此查询
Details::with('permission')->find(55);
并获得空数组
为什么会发生这种情况?什么是正确的查询?
答案 0 :(得分:1)
您的permission()
方法
更改此
return $this->morphedByMany('App\Models\Permission','model','.model_has_permissions','model_id','permission_id');
到这个
return $this->morphedByMany('App\Models\Permission','model','model_has_permissions','model_id','permission_id');
答案 1 :(得分:0)
我认为可以在find
之后链接with
。以下是您的选择。
延迟加载。
Details::find(55)->load('permissions');
急切加载where
子句
Details::with('permissions')->where('id', 55)->get();
<强>更新强>
不应该是morphToMany
吗?
public function details(): MorphToMany
{
return $this->morphedByMany('App\Models\Details', 'model', 'model_has_permissions', 'permission_id', 'model_id');
}
还是这个?
public function permission()
{
return $this->morphedByMany('App\Models\Permission','model','model_has_permissions','model_id','permission_id');
}