Laravel morphedByMany Query返回NULL

时间:2018-03-19 06:06:19

标签: php laravel eloquent

我有这个模型

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);

并获得空数组

为什么会发生这种情况?什么是正确的查询?

2 个答案:

答案 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。以下是您的选择。

  1. 延迟加载。

    Details::find(55)->load('permissions');
    
  2. 急切加载where子句

    Details::with('permissions')->where('id', 55)->get();
    
  3. <强>更新

    不应该是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');
    }