我有两张table: assessments
以及 benchmarks
. benchmarks
有一个名为 content
. 它们之间存在多对多关系: assessment_benchmark
. 我想整理一组 assessment_benchmark
旁边的table content
对应基准的属性。我试过:
$sorted = AssessmentBenchmark::all()->sortBy(function($assessmentBenchmark){
return $assessmentBenchmark->benchmark->content;
});
但这根本不起作用(它只是返回原始顺序)。但是,当我回来的时候 $assessmentBenchmark->comment
例如,它确实有效(comment是 assessment_benchmark
).
模型如下所示:
class AssessmentBenchmark extends Model
{
public function benchmark()
{
return $this->belongsTo(Benchmark::class);
}
public function assessment()
{
return $this->belongsTo(Assessment::class);
}
}
class Benchmark extends Model
{
public function assessments()
{
return $this->belongsToMany(Assessment::class);
}
}
class Assessment extends Model
{
public function benchmarks()
{
return $this->belongsToMany(Benchmark::class);
}
}
2条答案
按热度按时间rn0zuynd1#
好吧,你可以用下面的查询来排序,我要用评估模型,因为,我以前从来没有用过pivot模型。事实上,我从来没有过pivot模型。。
使用方法aş所以当你把
$assessments
在迭代中,不会对每个关系进行新的查询6tdlim6h2#
从聊天讨论中,它发现您有pivot字段,因此您可以更改
belongsToMany
像这样的关系现在获取数据
在视图中你可以这样渲染它
您可以使用
updateExistingPivot
有关详细信息,请查看manytomy关系https://laravel.com/docs/5.6/eloquent-relationships#many-对很多人来说