Объединение таблиц laravel и сохранение идентификаторов первых таблиц

Я заметил, что когда вы объединяете таблицы в 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();

Пожалуйста, разместите свой запрос.

Jonas Staudenmeir 03.08.2018 02:42

Вот это размещено

Ali Khiti 03.08.2018 19:07

Сегодня утром пробежался по чему-то похожему, просто ограничьте возвращаемые столбцы, например ->select("posts.*"), и если вам нужны переменные из других таблиц, добавьте profiles.whatever, просто не используйте profiles.* или users.*.

Tim Lewis 03.08.2018 19:08

Но ведь это же не все три стола, не так ли?

Ali Khiti 03.08.2018 19:47
Стоит ли изучать PHP в 2026-2027 годах?
Стоит ли изучать PHP в 2026-2027 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Оживление вашего приложения Laravel: Понимание режима обслуживания
Оживление вашего приложения Laravel: Понимание режима обслуживания
Здравствуйте, разработчики! В сегодняшней статье мы рассмотрим важный аспект управления приложениями, который часто упускается из виду в суете...
Коллекции в Laravel более простым способом
Коллекции в Laravel более простым способом
Привет, читатели, сегодня мы узнаем о коллекциях. В Laravel коллекции - это способ манипулировать массивами и играть с массивами данных. Благодаря...
Поиск нового уровня в Laravel с помощью MeiliSearch и Scout
Поиск нового уровня в Laravel с помощью MeiliSearch и Scout
Laravel Scout - это популярный пакет, который предоставляет простой и удобный способ добавить полнотекстовый поиск в ваше приложение Laravel. Он...
Освоение архитектуры микросервисов с Laravel: Лучшие практики, преимущества и советы для разработчиков
Освоение архитектуры микросервисов с Laravel: Лучшие практики, преимущества и советы для разработчиков
В последние годы архитектура микросервисов приобрела популярность как способ построения масштабируемых и гибких приложений. Laravel , популярный PHP...
Как построить CRUD-приложение в Laravel
Как построить CRUD-приложение в Laravel
Laravel - это популярный PHP-фреймворк, который позволяет быстро и легко создавать веб-приложения. Одной из наиболее распространенных задач в...
0
4
708
3

Ответы 3

вы должны показать свой код. но попробуй вот так

$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. я бы') -> получить ();

Но он возвращает только столбцы, выбранные с их псевдонимом

Ali Khiti 03.08.2018 19:09

Вам нужно указать все столбцы, которые вы хотите вернуть в запросе.

Geomi George 05.08.2018 08:21

Вы можете выбрать все из первой таблицы и ничего из второй

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, он возвращает только выбранный столбец

Ali Khiti 03.08.2018 19:09

используйте его вместе, сначала напишите select Raw, чтобы выбрать все столбцы из первой таблицы, затем напишите addSelect, чтобы выбрать любой столбец из другой таблицы

Andranik 03.08.2018 20:01

DB :: table ('table_1') -> join ('table_2', 'table_1.id', '=', 'table_2.table_1_id') -> selectRaw ('table_1. *') -> addSelect (table_2.column ) -> получить ();

Andranik 03.08.2018 20:01

если вы хотите выбрать более 1 столбца из второй таблицы, вы можете попробовать передать массив методу addSelect или написать столько addSelect, сколько вам нужно

Andranik 03.08.2018 20:03

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 ();

Andranik 03.08.2018 20:04

или -> addSelect (['table_2.column', 'table_2.column2'])

Andranik 03.08.2018 20:04

Если вы чего-то не понимаете, вы можете открыть чат, я объясню

Andranik 03.08.2018 20:05

Другие вопросы по теме