如何获取属于模型类的所有记录作为1-M多态关系上的关系

时间:2018-11-17 12:13:57

标签: laravel laravel-5 eloquent

我正在尝试以多态关系存储多个模型的状态,并从那里使用它们。

状态的检索是可行的,但除此之外,我还需要获取属于该特定模型的所有(可用)状态。然后急切地加载它们,这样我就可以选择形式或其他方式使用它们。

这是一个表示形式:

// Status.php
class Status extends Model
{
    public function statusable()
    {
        return $this->morphTo();
    }
}

// Article.php
class Article extends Model
{
    public function status()
    {
        return $this->morphOne(Status::class, 'statusable', 'statusable_type', 'statusable_id', 'status');
    }
}

// Post.php
class Post extends Model
{
    public function status()
    {
        return $this->morphOne(Status::class, 'statusable', 'statusable_type', 'statusable_id', 'status');
    }
}

在这里,我可以获取所选模型的状态(详细信息),例如App\Article::first()->status()->get()或按期望的方式加载它。我要添加的方法可以调用属于该特定模型的(所有)状态。例如:

$article = App\Article::first()->statuses();

,然后将所有可用状态返回给该模型。我当然可以(创建)像这样的方法:

// Article.php
...
public function statuses()
{
    $statuses = Status::where('statusable_type', self::class)->get();
    return $statuses;
}

但是这样我不能急于加载它,因为我不返回任何关系。那么,有没有一种更清洁的方法可以同时使用紧急加载?

0 个答案:

没有答案