SQL присоединиться Laravel, как? - PullRequest
2 голосов
/ 20 февраля 2020

Помогите мне, пожалуйста, с JOINS, обучение SQL и соединения болезненны: (

У меня есть таблица : категории с именем столбца: Имя, ID

У меня есть таблица : sub_categories с именем столбца: ID

У меня есть таблица : provider_services с именем столбца: category_id & subcategory_id

Когда я делаю в laravel просмотр блейд {{$provider->providerServices()->where("status",1)->count()}}

Я получу: 2

Это означает, что провайдер имеет 2 сервиса с category_id 2, 3 и subcategory_id 4,8

Вопрос: Как я могу объединить эти данные с категориями таблицы и получить имя категории, используя cat_id & subcat_id?

  • Category_id 2 is - Живопись
  • Category_id 3 is - Сантехника
  • SubCategory_id is - Aqua
  • SubCategory_id 8 is - Test

Итак, в результате я нужно что-то: покраска и аква, сантехника и испытания

Спасибо большое!

Ответы [ 2 ]

1 голос
/ 20 февраля 2020

Inner Join Clause

Построитель запросов также может использоваться для написания операторов соединения. Для выполнения базового «внутреннего соединения» вы можете использовать метод соединения в экземпляре построителя запросов. Первым аргументом, передаваемым методу соединения, является имя таблицы, к которой нужно присоединиться, а остальные аргументы определяют ограничения столбцов для соединения. Вы даже можете объединить несколько таблиц в одном запросе:

$users = DB::table('users')
            ->join('contacts', 'users.id', '=', 'contacts.user_id')
            ->join('orders', 'users.id', '=', 'orders.user_id')
            ->select('users.*', 'contacts.phone', 'orders.price')
            ->get();

Источник: https://laravel.com/docs/5.8/queries#joins

Приведенный выше пример можно легко изменить, чтобы он работал на вас. Функция соединения для производится следующим образом:

->join('table', 'column1', '=', 'column2')
0 голосов
/ 20 февраля 2020

Странно, почему этот SQL запрос возвращает общее состояние категорий и подкатегорий, но не статус provider_services?

SELECT categories.name, categories.id, sub_categories.id as idPodKa, sub_categories.name as ImjaPodkategorij, provider_services.status as Status
FROM categories
LEFT JOIN sub_categories 
ON categories.id=sub_categories.category_id 
LEFT JOIN provider_services
ON categories.id=sub_categories.category_id=provider_services.status
where provider_services.status = 1
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...