我正在按照asset
在数据透视表product
上定义的顺序显示属于order_column
的product_asset
s列表。在这种情况下,sortBy
函数没有效果。不会抛出任何错误,但无论如何都会以相同的顺序返回集合数组。
这是我目前列出的内容:
数据库:
Schema::create('product_asset', function (Blueprint $table) {
$table->integer('product_id')->unsigned()->index();
$table->foreign('product_id')->references('id')->on('products')->onDelete('cascade');
$table->integer('asset_id')->unsigned()->index();
$table->foreign('asset_id')->references('id')->on('assets')->onDelete('cascade');
$table->unsignedInteger('order_column')->nullable();
});
模型:
/**
* The assets that belong to the product.
*/
public function assets()
{
return $this->belongsToMany('App\Asset', 'product_asset')->withPivot('order_column');
}
视图:
<ul>
@foreach($resources->sortBy('pivot_order_column') as $resource)
<li><a href="{{ $resource->url }}">{{ $resource->name }}</a></li>
@endforeach
</ul>
我非常感谢你对这个有任何帮助!提前致谢。
类似问题:
https://laravel.io/forum/04-17-2014-order-by-pivot-table-attribute-in-eloquent
Laravel eloquent sorting by pivot in many to many relationships
您可以使用Indra的建议订购查询:
public function assets()
{
return $this->belongsToMany('App\Asset', 'product_asset')->withPivot('order_column')
->orderBy('product_asset.order_column');
}
或者在Laravel中对结果进行排序:
$resources->sortBy('pivot.order_column')
您的错误在这里pivot_order_column
您没有列名称pivot_order_column
您有一个名为order_column
的列您可以访问该关系,因为您已正确使用withPivot
关系。