1
我有2個表: - items
和groups
組合多個關係查詢在一個 - laravel
groups
表如下: -
create table groups (`id` int unsigned not null auto_increment,
`group_name` varchar(255),
primary key(`id`)
);
items
表如下: -
create table items (`id` int unsigned not null auto_increment,
`group_for` int unsigned not null,
`item_name` varchar(255),
primary key(`id`),
key `group_for` (`group_for`),
constraint `fk_group_for` foreign key (`group_for`)
references `groups`(`id`)
我有以下兩種雄辯方法: -
class Item extends \Eloquent {
// Add your validation rules here
public static $rules = [
// No rules
];
// Don't forget to fill this array
protected $fillable = ['group_for', 'item_name'];
public function divGet() {
return $this->belongsTo('group', 'group_for', 'id');
}
}
集團雄辯
class Group extends \Eloquent {
// Add your validation rules here
public static $rules = [
// No Rules.
];
// Don't forget to fill this array
protected $fillable = ['group_name'];
public function items() {
return $this->hasMany('item', 'group_for', 'id');
}
}
現在,我正在下面的查詢: -
$groupItem = array()
// Fetching all group row
$gGroup = Group::all();
// Checking if there is not 0 records
if(!is_null($gGroup)) {
// If there are more than 1 row. Run for each row
foreach($gGroup as $g) {
$groupItem[] = Group::find($g->id)->items;
}
}
正如你可以在上面看到,如果我有10組比,Group::find.....->items
查詢將運行10查詢。我可以在1查詢中將它們合併爲Group::all()
以上的1條記錄嗎?
它沒有返回,如「組名」組數據,它只是返回的所有「項目列表」。我也想要像他們的項目列表中的「組名稱」組數據。.. –
你能更具體嗎?這和你的代碼完全一樣。而'$ group'變量有你的組數據 –
是的,你是對的,但在我的情況下,我有不同的場景,我的意思是 。具有id - '1'的組具有名稱「'stackoverflow」,並且具有項目'a','b','c'。所以它只返回'a','b','c',但它不返回,'組名''stackoverflow'和它是這些項目所屬的'id'。 只接收'a','b'作爲一個數組很難理解,這些列表屬於哪個'id'或'group name'。我希望,你有我的觀點? 在我上面的查詢中,我可以保存另一組數據。但在您的查詢中,我無法獲得「羣組」數據。 –