SQLクエリをlaravelクエリに変換する際に問題があります。私はusers
とmessages
という2つのテーブルに参加して、他のユーザーと会話しているユーザーを取得できるようにしたいと考えています。LARARELクエリで変換するJOIN、WHERE、AND句を含むSQLクエリ
データベース構造:
メッセージ:
これは私が欲しいものを得る私のSQLクエリです:
SELECT u.id, c.id, u.first_name, u.last_name FROM messages c, users u
WHERE (CASE WHEN c.user_one = @USERID THEN c.user_two = u.ID WHEN c.user_two = @USERID THEN c.user_one= u.id END)
AND (c.user_one = @USERID OR c.user_two = @USERID) Order by c.id DESC Limit 20
は、これは私のLaravelクエリです:
DB::table('messages')
->join('users', function($join) use ($user_id) {
$join->select(DB::raw('CASE WHEN messages.user_one = ' . $user_id . ' THEN messages.user_two = ' . $user_id . 'WHEN messages.user_two = ' . $user_id . ' THEN messages.user_one = ' . $user_id));
$join->on(function($query) use ($user_id)
{
$query->where('messages.user_one', '=', $user_id);
$query->orWhere('messages.user_two', '=',$user_id);
});
})
->select('users.*', 'messages.*')
->get();
- :
はこれを使用しますか? – Strawberry
「他のユーザーと会話しているユーザー」とはどういう意味ですか? user_one列またはuser_two列のメッセージ表にあるすべてのユーザーが必要ですか? –
@Strawberryそれはパラメータとして渡されています、 'function getMessage($ user_id)' @Autista_z他の言葉では、私は現在のユーザのすべての会話を表示したいだけです。 – Joseph