我有一个statuses
表,我在其中存储多个模型(表)的状态。例如:
comments
id | status | text | ...
---------------------------
1 | 2 | great.. |
2 | 3 | thats.. |
posts
id | status | body | ...
---------------------------
1 | 4 | hey..|
2 | 5 | i w..|
statuses
id | type | title | ...
---------------------------
1 | comment | succes |
2 | comment | error |
3 | comment | published |
4 | post | deleted |
5 | post | pending |
在这里,我能够与belongsTo关系访问相应的记录。
class Post extends Model {
public function status()
{
return $this->belongsTo(Status::class, ....);
}
}
但是我想要的是急于加载评论的状态选项,以便我可以下拉或类似内容。我可以使用where创建一个自定义关系,但并不急于加载。
有什么建议吗?
答案 0 :(得分:1)
您可以为此使用Local Scopes。
状态模型
class Status extends Model
{
public static $COMMENT_STATUS = 'comment';
public static $POST_STATUS = 'post';
public function scopeForComments($query)
{
return $query->where('type', self::$COMMENT_STATUS);
}
public function scopeForPosts($query)
{
return $query->where('type', self::$POST_STATUS);
}
}
然后,在您的控制器中:
MyController.php
Status::forComments()->get(); //List up all the statuses for comments
Status::forArticles()->get(); //List up all the statuses for articles