こんにちは、私は多くのユーザーデータがいくつかのモデルの別々のテーブルに格納されているLaravelのアプリケーションを持っています。アクティビティフィードを作成する必要があります。これは、さまざまなデータを日付ごとに並べ替えることを意味します。Laravel Eloquentアクティビティフィードのクエリを組み合わせる
2つのモデル、Comment
とLike
があるとします。
私は両方の日付を組み合わせたフィードが必要です。 merge()
は、同じid
を持つ可能性があるため、オプションではありません。
私はUNION
でしたが、私の問題は何から何が来たのか分かりません。
私はこのようになりますテーブルを好き:
+------------+------------------+------+-----+---------+----------------+
| Field | Type | Null | Key | Default | Extra |
+------------+------------------+------+-----+---------+----------------+
| id | int(10) unsigned | NO | PRI | NULL | auto_increment |
| user_id | int(11) | NO | | NULL | |
| asset_id | int(11) | NO | | NULL | |
| created_at | timestamp | YES | | NULL | |
| updated_at | timestamp | YES | | NULL | |
+------------+------------------+------+-----+---------+----------------+
私のコメントのテーブルには、次のようになります。私はちょうど組合の2つのクエリは、私は彼らが異なっているだけ知っているかどう
+------------+------------------+------+-----+---------+----------------+
| Field | Type | Null | Key | Default | Extra |
+------------+------------------+------+-----+---------+----------------+
| id | int(10) unsigned | NO | PRI | NULL | auto_increment |
| asset_id | int(11) | NO | | NULL | |
| content | longtext | NO | | NULL | |
| user_id | int(11) | NO | | NULL | |
| created_at | timestamp | YES | | NULL | |
| updated_at | timestamp | YES | | NULL | |
+------------+------------------+------+-----+---------+----------------+
私の問題があります他のモデル(Blurb
など)にある可能性があるcontent
列の存在に基づいています。
どこ属するものをまっすぐに保ちながら、私の活動のフィードに私が言いたいので、基本的には、どのように私は、モデル間で複数のクエリを得るか、10分前に、あなたがコメントし、5分前、あなたが気に入っなど
私は非効率のために複数のクエリを実行したくないので、私はすべてのアクティビティ(好きなものやコメントなど)を1つのテーブルに保存したくありません。列の名前を変更するのではなく、クエリの目的でクエリを使用してデータを挿入するために使用できるエイリアスがありますか?たとえば、コメントの選択によって一時的なフィールドに「コメント」が追加され、
$data->type
?私はすべてのテーブルに型を入れることができましたが、私はスペースが不必要に取られてしまいました。明らかに私はコメントがコメントテーブルであればそれが私の唯一のクエリーだと知っていますが、今は私のことを考え直しています私は複数のテーブルにまたがる1つのクエリが必要です。
好きなコメントとコメントの関係を作成しましたか? – usrNotFound
@usrNotFoundいいえ...すべきですか? –
ユーザーがコメントを気に入っているかどうかはどうでしょうか。私はユーザーがいることを見ることができますが、コメントをどのようにタックしますか? – usrNotFound