Laravel где и группа - PullRequest
0 голосов
/ 29 июня 2018

у меня две таблицы Элемент:

  • ID
  • название

mark_item:

  • ID

  • item_id

Я бы хотел объединить эти две таблицы

  $item_mark = Item::select('item.*','mark_item.*')
                        ->join('mark_item', 'mark_item.item_id', '=', 'item.id')
                        ->where('item.title','=','ITEM_TEST')
                        ->get();

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

Example : 


    ITEM_TEST
     -Mark1
    ITEM_TEST 
     -Mark2
    ITEM_TEST 
     -Mark3

Я хотел бы отобразить:

ITEM_TEST

         -Mark1

         -Mark2

         -Mark3

Ответы [ 2 ]

0 голосов
/ 29 июня 2018

Ваши столы

item(id, title)
mark_item(id, item_id, name) //here assuming name filed contains 'Mark1', 'Mark2' etc

Из этой таблицы видно, что у вас есть OneToMany отношение между item и mark_item. В laravel вы можете легко определить эти отношения и получать данные через них.

Сначала вам нужно создать модель для обеих этих таблиц

Модель товара

class Item extends Model {
     $table = 'item'; 
     public function marks(){
        return $this->hasMany(ItemMark::class);
     }
}

Модель ItemMark

class ItemMark extends Model {
     $table = 'item_mark'; 
     public function item(){
        return $this->belongsTo(Item::class);
     }
}

Теперь получить данные

$item = Item::with('marks')->where('item.title','=','ITEM_TEST')->first();
echo $item->title;
foreach($item->marks as $mark){
   echo $mark->name;
}
0 голосов
/ 29 июня 2018

Не уверен, какое у вас отношение между обеими таблицами -

Если это отношение один к одному, используйте приведенный ниже запрос. Если вы хотите столбцы, просто добавьте их к выделенному, разделенному запятой.

$items = DB::table('item')
            ->select('item.title')
            ->leftJoin('mark_item', 'users.id', '=', 'posts.user_id')
            ->get();

Проверьте документацию Larvel Query для получения дополнительной информации

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