按多对多数据透视表列对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')