Я заметил, что когда вы объединяете таблицы в laravel с помощью lefJoin () или Join, возвращаемые им идентификаторы являются одной из последних таблиц. Итак, мне было интересно, могу ли я объединить две таблицы в laravel и сохранить идентификаторы первой таблицы?
Вот мой запрос
$comments = DB::table('posts')
->where('posts.parent_id',$id)
->leftJoin('profiles', 'profiles.user_id', '=', 'posts.user_id')
->leftJoin('users', 'users.id', '=', 'posts.user_id')
->get();
Вот это размещено
Сегодня утром пробежался по чему-то похожему, просто ограничьте возвращаемые столбцы, например ->select("posts.*"), и если вам нужны переменные из других таблиц, добавьте profiles.whatever, просто не используйте profiles.* или users.*.
Но ведь это же не все три стола, не так ли?






вы должны показать свой код. но попробуй вот так
$query = Users::where("users.user_id"," = ",$users->user_id)
if ($request->exists('product_name')) {
$query->join('products', 'users.user_id', 'products.user_id');
$query->where('products.product_name', 'like', '%' . $request->input('product_name')
. '%');
}
$test= $query->get();
В этом случае лучше использовать псевдонимы.
DB :: table ('table_1') -> select ('table1.column_name as alias_name', 'table_2.column_name as alias_name2') -> leftjoin ('table_2', 'table_2.userId', '=', 'table_1. я бы') -> получить ();
Но он возвращает только столбцы, выбранные с их псевдонимом
Вам нужно указать все столбцы, которые вы хотите вернуть в запросе.
Вы можете выбрать все из первой таблицы и ничего из второй
DB::table('table_1')->join('table_2', 'table_1.id', '=', 'table_2.table_1_id')
->selectRaw('table_1.*')
->get();
Пример DB::table('guests')->join('answers', 'guests.id', '=', 'answers.guest_id')
->selectRaw('guests.*')->get()
Вы также можете выбрать здесь что угодно из другой таблицы
использование: ->addSelect('table_2.column')
Когда я использую select raw, он возвращает только выбранную таблицу, а когда я использую addSelect, он возвращает только выбранный столбец
используйте его вместе, сначала напишите select Raw, чтобы выбрать все столбцы из первой таблицы, затем напишите addSelect, чтобы выбрать любой столбец из другой таблицы
DB :: table ('table_1') -> join ('table_2', 'table_1.id', '=', 'table_2.table_1_id') -> selectRaw ('table_1. *') -> addSelect (table_2.column ) -> получить ();
если вы хотите выбрать более 1 столбца из второй таблицы, вы можете попробовать передать массив методу addSelect или написать столько addSelect, сколько вам нужно
DB :: table ('table_1') -> join ('table_2', 'table_1.id', '=', 'table_2.table_1_id') -> selectRaw ('table_1. *') -> addSelect ('table_2. столбец ') -> addSelect (' table_2.column2 ') -> get ();
или -> addSelect (['table_2.column', 'table_2.column2'])
Если вы чего-то не понимаете, вы можете открыть чат, я объясню
Пожалуйста, разместите свой запрос.