我正在寻找在数据透视表asset
上按product
定义的顺序显示属于order_column
的{{1}}列表。在这种情况下,sortBy
函数无效。不会抛出任何错误,但无论如何都会以相同的顺序返回集合数组。
这是我目前的布局:
数据库:
product_asset
型号:
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');
}
我非常感谢有关这方面的任何帮助!提前谢谢。
类似问题:
https://laravel.io/forum/04-17-2014-order-by-pivot-table-attribute-in-eloquent
Laravel eloquent sorting by pivot in many to many relationships
答案 0 :(得分:1)
您的错误在这里pivot_order_column
您没有列名pivot_order_column
,您有一个名为order_column
的列
您可以访问关系,因为您已正确使用withPivot
关系。
答案 1 :(得分:1)
您可以使用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')