Выберите данные и используйте где и где Laravel 5.6 - PullRequest
0 голосов
/ 26 февраля 2019

Я пытаюсь создать ((Где и где) ИЛИ (Где и где)) И после долгих поисков я нашел это

  $last_transations = Transcationhistorique::where('sender_id', '=', $user_id)
                            ->where('receiver_id','=', $user_id)
                            ->orderBy('created_at', 'desc')
                            ->skip(3)
                            ->take(3)
                            ->get();

Я получаю пустой результат

«последние 3 транзакции»: []

Ответы [ 4 ]

0 голосов
/ 26 февраля 2019
  $last_transations = Transcationhistorique::where([['sender_id', '=', $user_id],['receiver_id','=', $user_id]])
                            ->orderBy('created_at', 'desc')
                            ->skip(3)
                            ->take(3)
                            ->get();

Вот, пожалуйста.

0 голосов
/ 26 февраля 2019

Вы можете использовать где и передавать ему функции Например:

, если я хочу получить пользователя, который является администратором и имеет идентификатор 4 или 5

$users->where("type","admin")->where(function($query){
        $query->where("id",4)->orWhere("id",5);
    })->get();

Это эквивалентно:

SELECT * FROM users WHERE type = "admin" AND (id = 4 OR id = 5)
0 голосов
/ 26 февраля 2019

Я думаю, что вы указываете, что пропустить и принять значения неправильно, вы можете попробовать следующее:

$last_transations = Transcationhistorique::where('sender_id', $user_id)
                    ->orWhere('receiver_id', $user_id)
                    ->orderBy('created_at', 'desc')->skip(0)->take(3)->get();

Из документов написано:

пропустить / взять : чтобы ограничить количество результатов, возвращаемых запросом, или пропустить указанное количество результатов в запросе, вы можете использовать методы пропуска и принятия:

То, что вы делаете, этопропустите 3 и возьмите 3, так что это будет похоже на ->offset(3)->limit(3), который вернется пустым!

0 голосов
/ 26 февраля 2019

Если вы ищете простой where or where, тогда используйте (используя ваш запрос):

$last_transations = Transcationhistorique::where('sender_id', $user_id)
                    ->orWhere('receiver_id', $user_id)
                    ->orderBy('created_at', 'desc')->skip(3)->take(3)->get();

Если вы ищете where and where, тогда используйте (используя свой запрос):

$last_transations = Transcationhistorique::where(['sender_id' => $user_id, 'receiver_id' => $user_id])
                    ->orderBy('created_at', 'desc')->skip(3)->take(3)->get();

Если вы ищете (where and where) OR (where and where), это немного сложно, вы сделаете ваш запрос следующим образом:

DB::table('users')
   ->where(['col1' => 'val1', 'col2' => 'val2'])
   ->orWhere(function ($query) {
         $query->where(['col3' => 'val3', 'col4' => 'val4']);
   })
   ->get();

Ссылка здесь

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...