【问题标题】:Retrieving a Model's morphOne object returns an Eloquent relationship检索模型的 morphOne 对象会返回一个 Eloquent 关系
【发布时间】:2015-12-03 21:04:23
【问题描述】:

我有一个带有 public function image() { return $this->morphOne('App\Image', 'imageable'); }

但是当我修改 $post->image() 时,它会返回 Illuminate\Database\Eloquent\Relations\MorphOne {#704}

我必须添加“->first()”才能实际获取 Image 对象。我如何让$post->image() 返回 Image 对象?

这是Image对象上的关系:public function imageable() { return $this->morphTo(); }

【问题讨论】:

    标签: laravel eloquent laravel-5.1 polymorphic-associations


    【解决方案1】:

    如果要检索关系的结果,应调用动态属性$post->image,而不是方法$post->image()

    Eloquent Relationships 文档通过基本的关系用法进行了解释,但如果您略读过去,很容易阅读过去。我建议您在开始处理人际关系时花点时间阅读本页的大部分内容,如果不是全部的话。

    【讨论】:

    • 谢谢 - 被困在____ to many 关系的心态中。
    • 无论关系类型如何,语法都是相同的。这仅取决于您是要在检索结果之前修改关系(例如,添加where 条件),还是直接获取关系的结果。 :)
    【解决方案2】:

    简单的回答,我需要使用$post->image 来获取相关的Image 对象。傻我。我认为我的困惑源于陷入多对多或一对多关系的心态。

    【讨论】:

      猜你喜欢
      • 2023-03-27
      • 1970-01-01
      • 2022-01-05
      • 2017-01-29
      • 2014-12-14
      • 2018-01-17
      • 2021-07-11
      • 2021-08-22
      • 1970-01-01
      相关资源
      最近更新 更多