根据其他表中的列过滤Eloquent morphTo关系

时间:2014-07-01 10:33:09

标签: laravel laravel-4 eloquent table-relationships

我有一个Eloquent模型,可以转换为其他Eloquent模型,如下所示:

<?php

class Message extends Eloquent {

    public function message()
    {
        return $this->morphTo('message');
    }

}

原因是,应用程序有许多不同类型的消息。我知道这不是最优雅的方法,但这是我以前的开发人员所痴迷的。

所以,我的问题是:我只需要返回Message个实例,其中变形消息表中的state列与值匹配。我的Message模型类中有这个查询范围方法:

public function scopeDeclinedMessages($query)
{
    return $query->with(array('message' => function ($q)
    {
        $q->where('state', '=', MessageState::DECLINED);

    }));
}

但是,这不起作用,因为它仍会返回Messages,其中变形表中的state 与拒绝状态不匹配。

对于透明度,MessageState::DECLINED的值为2,但我收到的消息是变形表格state列等于0的位置。

0 个答案:

没有答案