我正在尝试以多态关系存储多个模型的状态,并从那里使用它们。
状态的检索是可行的,但除此之外,我还需要获取属于该特定模型的所有(可用)状态。然后急切地加载它们,这样我就可以选择形式或其他方式使用它们。
这是一个表示形式:
// 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;
}
但是这样我不能急于加载它,因为我不返回任何关系。那么,有没有一种更清洁的方法可以同时使用紧急加载?