У меня есть 3 запроса, моя проблема в том, что я хочу, чтобы объединенная коллекция сортировалась по created_at
.Laravel как сортировать коллекции слияния
Как объединить и отсортировать три коллекции построителей запросов?
$posts1 =\DB::table('posts')
->select('posts.*', 'users.nom','pratics.titre')
->join('pratics', 'posts.pratic_id','=','pratics.id')
->join('users', 'posts.user_id','=','users.id')
->where('pratics.user_id',$id)
->orderBy('posts.id', 'desc')
->get();
$posts2 =\DB::table('posts')
->select('posts.*', 'users.nom','pratics.titre')
->join('journals', 'posts.pratic_id','=','journals.id')
->join('users', 'posts.user_id','=','users.id')
->where('journals.user_id',$id)
->orderBy('posts.id', 'desc')
->get();
$posts3 =\DB::table('posts')
->select('posts.*', 'users.nom','pratics.titre')
->join('exos', 'posts.exo_id','=','exos.id')
->join('users', 'posts.user_id','=','users.id')
->where('exos.user_id',$id)
->orderBy('posts.id', 'desc')
->get();
$posts = array_merge($posts1,$posts2, $posts3)->sortby('created_at');
Я предлагаю вам «СОЮЗ» все ваши запросы, а не объединять эти 3 массива в php. https://laravel.com/docs/5.3/queries#unions –
для объединения следующим образом: $ posts1 = \ DB :: table ('posts') -> select ('posts. *', 'users.nom', 'pratics.titre') -> join ('pratics', 'posts.pratic_id', '=', 'pratics.id') -> join ('users', 'posts.user_id', '=', ' users.id ') -> где (' pratics.user_id», $ ID); $ posts2 = \ DB :: table ('posts') -> select ('posts. *', 'Users.nom', 'pratics.titre') -> join ('journalals', 'posts.pratic_id' , '=', 'journals.id') -> join ('users', 'posts.user_id', '=', 'users.id') -> где ('journalals.user_id', $ id) - > объединение ($ posts1) -> получить(); – nabil