【问题标题】:Laravel polymorphic relationship 0 resultsLaravel 多态关系 0 结果
【发布时间】:2018-01-11 18:57:17
【问题描述】:

我与 Laravel 有多态关系。 我的多态关系是 Message->messageable 成为 Group 或 Chat。

从 Message->messageable 开始会给我正确的结果(例如与消息关联的群组或聊天)。

从示例 Group::first()->with('messages')->get() 开始,将返回一个空消息数组。

我的消息数据库表是 messageable_id messageable_type

我的模型方法如下

class Message extends Model
{
public function messageable(){
    return $this->morphTo();
}

^按预期工作

class Group extends Model
{
function messages(){
    return $this->morphMany('Message','messageable');
}

class Chat extends Model
{
public function messages(){
    return $this->morphMany('Message','messageable');

这些返回空。

使用的示例数据: 1

有什么想法吗?

【问题讨论】:

    标签: php laravel polymorphic-associations


    【解决方案1】:

    你们的关系不正确。您需要引用完整的类名称空间,而不仅仅是类名本身。例如

    class Group extends Model
    {
        public function messages()
        {
            return $this->morphMany(\App\Models\Message::class', 'messageable');
        }
    }
    

    【讨论】:

    • 尝试使用/不使用完整命名空间,没有区别。
    • 您的数据库架构是什么样的,特别是对于可变形字段?
    【解决方案2】:

    忘记在我的数据库 messageable_type 中包含命名空间。

    从 Group 更改为 App\Group。

    【讨论】:

      猜你喜欢
      • 2017-03-27
      • 1970-01-01
      • 2017-10-03
      • 2019-05-27
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-07-31
      相关资源
      最近更新 更多