Как совместить два sql стола в laravel 5,8 - PullRequest
0 голосов
/ 27 января 2020

Я пытаюсь сравнить две таблицы, чтобы убедиться, что пользовательские данные уже находятся в другой таблице. Я показываю некоторые сообщения, о которых они говорят, где whereRaw, но подробностей недостаточно. Я пытался выполнить запрос, но я не получаю то, что хочу.

ОБНОВЛЕНО У меня есть 2 таблицы, одна из которых предназначена для вызовов между двумя людьми

Challenge Table  id,user_one, user_two, data_one, data_two,winner_id

И моя вторая таблица

vote Table id, user_id, battle_id, voted_user

Я хочу проверить, голосует ли пользователь уже за столом или нет, Если да, пропустите эту таблицу вызова и покажите пользователю данные оставшейся таблицы.

$challenges = DB::table('challenges')->whereRaw([
            ['challenges.user_one', '!=', $uid],
            ['challenges.id', '!=', 'vote.id'],
        ])->orWhereRaw([
            ['challenges.user_one', '!=', $uid],
            ['challenges.id', '!=', 'vote.id'],
        ])->get();

1 Ответ

1 голос
/ 27 января 2020

Вы можете достичь этого, используя crossJoin

$challenges = DB::table('challenges')->crossJoin('vote')
        ->where('challenges.user_one', '!=', $uid)
        ->where('challenges.id', '!=', 'vote.id')
        ->orWhere('challenges.user_one', '!=', $uid)
        ->orWhere('challenges.id', '!=', 'vote.id')->get();

См .: https://laravel.com/docs/5.8/queries

...