Laravel по-русски

Русское сообщество разработки на PHP-фреймворке Laravel.

Ты не вошёл. Вход тут.

#1 05.07.2016 21:56:21

Множественный селект Query Builder?

Можно ли при помощи Query Builder делать несколько селектов в оном запросе? К примеру есть две таблицы:
tablepost:
id
post
title
cat_id

tablecat:
id
name
parent

$post = DB::table(’post’)

тут что типa:
select from tablecat where(’tablecat.cat_id’, ’=’,tablepost.cat_id AS cat1’ );
select from tablecat where(’tablecat.cat_id’, ’=’,cat1t.parent AS cat2’ );

—>get();
Суть в том чтобы получить родительскую категорию poct.cat_id:

Изменено bibimoto (05.07.2016 22:00:16)

Не в сети

#2 06.07.2016 03:55:23

CarlyleV

Re: Множественный селект Query Builder?

Можно, но какой в этом смысл.
Только для того что бы получить родительскую категорию не нужно несколько селектов, нужен join.
(Очень туманно составлен, но если я правильно понял то вы хотите получать родительскую и просто категорию вместе с постом)
Если нужен просто запрос то это будет что-то вроде такого:

 "select tp.*, tc.cat_id, tc.name, tc2.cat_id, tc2.name
  from tablepost tp
 join tablecat tc on tablepost.cat_id = tc.id
 join tablecat tc2 on tc.parent = tc2.id
 where tp.id = 'id поста' "

Лучше используйте отношения между моделями для этих целей.
https://laravel.com/docs/5.2/eloquent-r … -relations

https://laravel.ru/docs/v5/eloquent-relationships

#3 06.07.2016 09:42:43

Re: Множественный селект Query Builder?

Присоединяюсь к CarlyleV. Зачем вы используете Laravel, если при этом хотите лепить тонны raw запросов? Изучите ORM.

Не в сети

#4 06.07.2016 11:56:38

CarlyleV

Re: Множественный селект Query Builder?

Иногда имеет смысл лепить тонны raw запросов)
К примеру когда у вас очень большие объемы и количество этих запросов то activeRecord
Показывает себя не с лучшей стороны.
Но это явно не тот случай.

#5 06.07.2016 12:02:34

Re: Множественный селект Query Builder?

CarlyleV пишет:

Можно, но какой в этом смысл.
Только для того что бы получить родительскую категорию не нужно несколько селектов, нужен join.
(Очень туманно составлен, но если я правильно понял то вы хотите получать родительскую и просто категорию вместе с постом)
Если нужен просто запрос то это будет что-то вроде такого:

 "select tp.*, tc.cat_id, tc.name, tc2.cat_id, tc2.name
  from tablepost tp
 join tablecat tc on tablepost.cat_id = tc.id
 join tablecat tc2 on tc.parent = tc2.id
 where tp.id = 'id поста' "

Лучше используйте отношения между моделями для этих целей.
https://laravel.com/docs/5.2/eloquent-r … -relations

https://laravel.ru/docs/v5/eloquent-relationships


Да что то вроде этого спасибо.
Я начал писать используя Query Builder. Я немного понимаю как работают отношения они бы тут подошли если надо было вытащить к примеру одну категорию или даже несколько.
Но как они могут помочь вытащить родительские категории?

Не в сети

#6 06.07.2016 13:25:02

CarlyleV

Re: Множественный селект Query Builder?

Пол года не смотрел в документацию но если я не ошибаюсь то
в описании модели поста должно быть что то вроде такого

 
   public function parent()
    {
       return $this->belongsTo('App\Category', 'foreign_key', 'other_key');
    }

в свою очередь у модели категории должен быть аналогичный метод получения родителя в своей же модели

public function parent()
    {
        return $this->belongsTo('Category', 'parent_id');
    }
    public function children()
    {
        return $this->hasMany('Category', 'parent_id');
    }

таким образом вы можете получить доступ из поста к категории к которой он принадлежит, а оттуда доступ к родительским и дочерним категориям.

Все это есть в документации, для вас она даже на русском языке на этом сайте. Так что прочитайте ее вдумчиво или просто прочитайте несколько раз и многие вопросы отпадут (хотя несомненно появится много новых).

#7 07.07.2016 23:47:28

Re: Множественный селект Query Builder?

Спасибо. Почитаю на досуге.

Не в сети

Подвал раздела