按多对多数据透视 Table 列对 Laravel 集合进行排序
Sorting a Laravel Collection by Many to Many Pivot Table Column
我正在考虑按照 order_column
在枢轴 table [=18= 上定义的顺序显示属于 product
的 asset
的列表].在这种情况下,sortBy
函数无效。不会抛出任何错误,但无论如何 returns 集合数组都以相同的顺序排列。
这是我目前的布局:
数据库:
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
你的错误在这里 pivot_order_column
你没有列名 pivot_order_column
你有一个名为 order_column
的列
您可以在关系上访问它,因为您已在关系上正确使用 withPivot
。
您可以使用 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')
我正在考虑按照 order_column
在枢轴 table [=18= 上定义的顺序显示属于 product
的 asset
的列表].在这种情况下,sortBy
函数无效。不会抛出任何错误,但无论如何 returns 集合数组都以相同的顺序排列。
这是我目前的布局:
数据库:
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
你的错误在这里 pivot_order_column
你没有列名 pivot_order_column
你有一个名为 order_column
的列
您可以在关系上访问它,因为您已在关系上正确使用 withPivot
。
您可以使用 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')