按多对多数据透视表列对Laravel集合进行排序
我正在查看一个属于按多对多数据透视表列对Laravel集合进行排序,laravel,laravel-eloquent,Laravel,Laravel Eloquent,我正在查看一个属于产品的资产列表,其顺序由透视表产品资产上的订单列定义。在这种情况下,该函数无效。不会抛出错误,但无论发生什么情况,它都会以相同的顺序返回集合数组 以下是我目前所阐述的内容: 数据库: Schema::create('product_asset', function (Blueprint $table) { $table->integer('product_id')->unsigned()->index(); $table
产品的资产
列表,其顺序由透视表产品资产
上的订单列
定义。在这种情况下,该函数无效。不会抛出错误,但无论发生什么情况,它都会以相同的顺序返回集合数组
以下是我目前所阐述的内容:
数据库:
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>
型号:
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>
查看:
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>
@foreach($resources->sortBy('pivot\u order\u column')作为$resource)
@endforeach
我将非常感谢任何在这方面的帮助!提前谢谢
类似问题:
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>
您的错误在这里pivot\u order\u column
您没有列名pivot\u order\u column
您有一个名为order\u column
您可以在关系上访问它,因为您已经在关系上正确地使用了with pivot
。您可以使用Indra的建议排序查询:
公共职能资产()
{
返回$this->belongtomany('App\Asset','product\u Asset')->withPivot('order\u column'))
->orderBy('product_asset.order_column');
}
或在Laravel中对结果进行排序:
$resources->sortBy('pivot.order\u column')