こんにちは、私はここで新しいです。ネイティブの英語のスピーカーではありませんので、私の文法や質問の書式上の間違いを私に許してください。モデル内のLaravel union
私は、laravel framework 5.4バージョンを使用してphpでアプリケーションを構築しています。 ウェブアプリは、記事や記事を投稿するユーザーをレビューするのに非常に簡単です。
私は自分のモデル内で関数の結果をどのように結合できるかを知りたいと思います。 ユーザーモデルからのallReviews関数が、ユーザーがorderby createdtimeを持っているレビューとユーザーが混合したレビューを返すようにします。
私はより良い説明をさせてください。だから私の質問は、私が動作するように、ユーザからの機能allReviewsを行うことができる方法である
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');
}
}
:
Users | Articles | Reviews
--------- | --------- | ---------
id | id | id
name | user_id | reviewable_id
email | title | reviewable_type
password | body | reviewtext
etc.. | etc.. | created_time
、ここでは私のモデルであるコード:ここ
は私の主に3つのテーブルのですか?
すべてのヘルプは高く評価され:) は
返信ありがとうございますが、これはユーザーが持っているレビューのみを返します 私は彼が書いた記事をレビューし、その結果を注文し、それらを注文して時間を作るようにしています。 ありがとう – NesJohnL
テーブル名が重複しているようですが、記事モデルとレビューモデルの両方に「記事」を使用しています。 また、モデルクラスは複数形であってはいけません。レビューをレビューに変更します。レビュー - >表のプロパティを「レビュー」に変更し、適切な移行を作成します。 – user3010273
ああ本当にそれを気づいて変更しましたが、それでも機能をどうやって作ったのか分かりません: – NesJohnL