Как я могу показать и разбить на два запроса в блейде laravel? - PullRequest
0 голосов
/ 07 марта 2020

Я хочу показать $ personnals и $ users в таблице в блэйде. Я знаю, я должен использовать @ foreach . Но я не могу. Потому что у меня есть два запроса , и я не могу разбить на страницы и показать их.

$personnals = DB::table('orders')
            ->where('pay_type', 1)
            ->leftJoin('personnels', 'orders.personnel_id', '=', 'personnels.id')
            ->leftJoin('users', 'personnels.user_id', '=', 'users.id')
            ->select(['name AS personnelName', 'lastname AS personnelLastName'])
            ->get();

 $users = DB::table('orders')
        ->where('pay_type', 1)
        ->leftJoin('users', 'orders.user_id', '=', 'users.id')
        ->select(['name AS userName', 'lastname AS userLastName', 'orderCode'])
        ->get();

$ personnals имеет 100 элементов, а $ users также имеет 100 элементов. Каждый элемент является массивом. Я хочу объединить эти массивы вместе и иметь один массив с 100 элементами массива.

Например: я хочу что-то вроде $ result:

$personnals = [ [ 'a'=>'blue', 'b'=>'red' ], [  'a'=>'green', 'b'=>'black' ] ];
$users = [ [ 'c'=>'yellow', 'd'=>'orange' ], [  'c'=>'white', 'd'=>'pink' ] ];

$result = [
            [ 'a'=>'blue', 'b'=>'red', 'c'=>'yellow', 'd'=>'orange' ] ,
            [  'a'=>'green', 'b'=>'black', 'c'=>'white', 'd'=>'pink' ]
        ];

Как я могу показать их в блейде с нумерацией страниц ?

ИЛИ

Можно ли показать все в одном запросе? Как?

Спасибо.

1 Ответ

0 голосов
/ 07 марта 2020

вы можете использовать union

$personnals = DB::table('orders')
            ->where('pay_type', 1)
            ->leftJoin('personnels', 'orders.personnel_id', '=', 'personnels.id')
            ->leftJoin('users', 'personnels.user_id', '=', 'users.id')
            ->select(['name', 'lastname', 'orderCode']);


 $result = DB::table('orders')
        ->where('pay_type', 1)
        ->leftJoin('users', 'orders.user_id', '=', 'users.id')
        ->select(['name', 'lastname', 'orderCode'])
        ->union($personnals)
        ->get();

попробуйте выше!


Поскольку вы хотите получить только 100 результатов вместо 200, то вы ожидаете join вместо union

 $result = DB::table('orders')
            ->where('pay_type', 1)
            ->leftJoin('personnels', 'orders.personnel_id', '=', 'personnels.id')
            ->leftJoin('users AS u1', 'personnels.user_id', '=', 'u1.id')
            ->leftJoin('users AS u2', 'orders.user_id', '=', 'u2.id')
           ->select(['u2.name AS userName', 'u2.lastname AS userLastName', 'orderCode', 'u1.name AS personnelName', 'u1.lastname AS personnelLastName'])
            ->get();
...