我有两个桌子 项:
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
答案 0 :(得分:0)
不确定两个表之间的关系-
如果它是一对一的关系,请执行以下给出的查询。 如果需要列,只需将其添加到选择中,并用逗号分隔即可。
$items = DB::table('item')
->select('item.title')
->leftJoin('mark_item', 'users.id', '=', 'posts.user_id')
->get();
答案 1 :(得分:0)
您的表格
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;
}