Laravel在哪里和分组依据

时间:2018-06-29 12:41:30

标签: mysql sql laravel

我有两个桌子 项:

  • 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 :(得分:0)

不确定两个表之间的关系-

如果它是一对一的关系,请执行以下给出的查询。 如果需要列,只需将其添加到选择中,并用逗号分隔即可。

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

Check Larvel Query doc for more info

答案 1 :(得分:0)

您的表格

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

从这些表中很明显,您在OneToManyitem之间具有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;
}
相关问题