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