0
你好,我是新来的,而不是一个母语为英语的人,所以请原谅我的语法错误和我的问题格式。Laravel联盟在模型功能
我正在用php使用laravel框架5.4版本构建一个应用程序。 网络应用程序非常简单,用于审阅发布文章的文章和用户。
我想了解如何将我的模型中的函数结果联合起来。 我想要用户模型的allReviews函数返回用户与评论混合的评论,他的文章有orderby createdtime。
让我解释得更好。
这里是我的3页主要的表:
Users | Articles | Reviews
--------- | --------- | ---------
id | id | id
name | user_id | reviewable_id
email | title | reviewable_type
password | body | reviewtext
etc.. | etc.. | created_time
,这里是我的模型代码:
class User extends Model{
protected $table = 'users';
public function articles()
{
return $this->hasMany(Article::class,'user_id');
}
public function reviews(){
return $this->morphMany(Review::class,'reviewable');
}
public function allReviews(){
/*
i want union something like this:
$result = $this->reviews() union
foreach ($this->Articles() as $Article) {
union $Article->reviews();
}
orderby created_time ASC or DESC doesn't matter
return $result
*/
}
}
class Article extends Model{
protected $table = 'articles';
public function user()
{
return $this->belongsTo(User::class,'user_id');
}
public function reviews(){
return $this->morphMany(Review::class,'reviewable');
}
}
class Review extends Model{
protected $table = 'reviews';
public function reviewable(){
return $this->morphTo('reviewable');
}
}
所以我的问题是我怎么可以从用户做功能allReviews工作?
任何帮助表示赞赏:) 谢谢
感谢您的快速回复,但这只会返回用户的评论 我想返回用户的评论+评论他撰写的文章并将这些结果联合起来,并通过创建时间使它们排序。 谢谢 – NesJohnL
您似乎有一个重复的表名称,您在文章模型和评论模型中都使用“文章”。 此外,你的模型类不应该是复数形式。重命名审查。将Review-> table属性更改为“reviews”并创建适当的迁移。 – user3010273
ahhh我真的很抱歉只是注意到并改变了它,但我仍然不知道如何使功能allReviews工作:( – NesJohnL