sql >> データベース >  >> RDS >> Mysql

LaravelのEloquentORMでピボットテーブルデータで注文する方法

    2つの方法があります。1つはtable.fieldを指定する方法です。 、その他はEloquentエイリアスpivot_fieldを使用します withPivot('field')を使用する場合 :

    // if you use withPivot
    public function articles()
    {
      return $this->belongsToMany('Article', 'tops_has_posts')->withPivot('range');
    }
    
    // then: (with not whereHas)
    $top = Top::with(['articles' => function ($q) {
      $q->orderBy('pivot_range', 'asc');
    }])->first(); // or get() or whatever
    

    EloquentはwithPivotで提供されるすべてのフィールドをエイリアスするため、これは機能します としてpivot_field_name

    さて、一般的な解決策:

    $top = Top::with(['articles' => function ($q) {
      $q->orderBy('tops_has_posts.range', 'asc');
    }])->first(); // or get() or whatever
    
    // or:
    $top = Top::first();
    $articles = $top->articles()->orderBy('tops_has_posts.range', 'asc')->get();
    

    これにより、関連するクエリが並べ替えられます。

    注: このように名前を付けることであなたの人生を難しくしないでください。 posts 必ずしもarticlesではありません 、本当に必要でない限り、どちらかの名前を使用します。



    1. php-mysqlスクリプトが失敗したときに詳細なエラーレポートを取得する方法は?

    2. mySQLの元の行番号を返す

    3. オブジェクト'DF__*'は列'*'に依存しています-intをdoubleに変更します

    4. 列から一意の値を選択する