猿问

Eloquent groupBy() 在表关系上无法正常工作

该groupBy方法无法正常工作。我不确定是什么问题。


更新

我在表之间建立了hasMany()<->belongsTo()关系。


地方model


protected $table = "places";

protected $guarded = [];


public $with = ["plans"];


public function plans()

{

    return $this->hasMany("App\Models\Plan");

}

计划Model


protected $guarded = [];


public function place()

{

    return $this->belongsTo("App\Models\Place");

}

在控制器中,当我返回 json 数据时,我可以看到关系。


$place = Place::with(["plans"])->get();


return $place;

结果很好。检查图像:https ://imgur.com/a/0CHXPhQ


但是,当我尝试groupBy()在place_name列上使用时。它不会将他们的计划集中在一个地方......


Place::with(["plans"])->groupBy("place_name")->get(); 

结果:https ://imgur.com/a/qPxMU42


如您所见,第二名的计划没有与第一名组合...它已经变得未知...预期结果计划对象也应该分组,因为它们已place_name分组...


知道是什么导致了这个问题吗?我该如何解决?


开心每一天1111
浏览 142回答 2
2回答

Qyouu

如果您遇到有时两行由于分组依据而分组的问题,那么您可以做一件事。您可以使用 group by concat 两个字段。$data&nbsp;=&nbsp;Place::groupBy(\DB::raw('CONCAT(name,&nbsp;'&nbsp;',&nbsp;address)'))->paginate();这是您可以放置并获得期望结果的逻辑。

神不在的星期二

尝试这个$data&nbsp;=&nbsp;Place::groupBy(['name','address'])->paginate(20);
随时随地看视频慕课网APP
我要回答