Laravel по-русски

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

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

#1 08.03.2015 13:22:40

ORM Eloquent: выбор из двух таблиц

Прошу помощи, чтобы разобраться в отношениях Eloquent

Есть 3 таблицы:
categories

  • id

  • name

  • icon

  • parent_id

  • ...

regions

  • id

  • name

  • parent_id

  • ...

items

  • id

  • name

  • category_id

  • region_id

  • ...

Отношение прописано в модели Items

public function icon(){
    return $this->belongsTo('App\Category', 'category_id', 'id');
}

Нужно выбрать Items с одним полем (icon) из модели Category (табл. categories)
Моя выборка:

Item::where('region_id', $region_id)->with('icon')->get()->toArray()

В результате получаю items, где в поле icon содержится вся строка из categories, а мне нужно:

  • одно поле из табл. categories, типа categories.icon as icon

  • желательно отобрать только нужные поля из Item, типа get(['id', 'name', 'categories.icon as icon'])

  • в идеале, в условие where передать массив со сприском $region_id, типа Item::where('region_id', 'in', [3, 4, 5])

Изменено Goshik (08.03.2015 13:23:48)

Не в сети

#2 08.03.2015 14:28:22

Re: ORM Eloquent: выбор из двух таблиц

1. $this->belongsTo()->select()
2. В чем вопрос?
3. whereIn()

Не в сети

#3 08.03.2015 15:06:02

Re: ORM Eloquent: выбор из двух таблиц

Wide пишет:

3. whereIn()

спасибо, в документации не нашел, видно api надо смотреть

Wide пишет:

1. $this->belongsTo()->select()

большое спасибо!
Только нужно обязательно указывать id, кроме выбираемого поля, иначе получаем null

Wide пишет:

2. В чем вопрос?

Вопрос в выборе только нужных полей.
Оказалось также нужно указывать category_id, иначе получаем icon = null

Не в сети

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