2016-07-25 5 views
0

Laravel5.1、関係、EloquentORM、ソート

<table border="true"> 
 
    <tr> 
 
    <th style="width:100px">Table</th> 
 
    <th colspan="3" style="width:300px">Columns</th> 
 
    </tr> 
 
    <tr> 
 
    <td style="width:100px">Articles</td> 
 
    <td style="width:100px">id</td> 
 
    <td colspan="2" style="width:200px; color: #aaaaaa">other dependent variables</td> 
 
    </tr> 
 
    <tr> 
 
    <td style="width:100px">Article_Tag</td> 
 
    <td style="width:100px">id</td> 
 
    <td style="width:100px">article_id</td> 
 
    <td style="width:100px">tag_id</td> 
 
    </tr> 
 
    <tr> 
 
    <td style="width:100px">Tags</td> 
 
    <td style="width:100px">id</td> 
 
    <td style="width:100px">name</td> 
 
    <td style="width:100px"></td> 
 
    </tr> 
 
</table>

その後、私は、タグテーブルの[名前]で記事テーブルをソートしたいです。 私は以下の閉鎖でeager-loadingを試みましたが、それは動作しませんでした。 モデルの記事とタグは、belongsToMany、 でちょうど接続されています。データを出力するのに成功しましたが、ソートされませんでした.Offcourse、getTagに引数を与えませんでした(引数を与えたとき、 。トンのいずれか[名前]によって狭め)

use App\Article; 
use App\Tag; 

... 

public function __construct(Article $article) 
{ 
    $this->article = $article; 
} 

... 

public function getTag($tag = NULL) 
{ 
$flag = isset($tag); 

$articles = $this->article->orderBy('created_at', 'desc')->with([ 
    'tags' => function($query) use ($flag, $tag){ 
     ($flag) 
      ? $query->where('name', $tag) 
      : $query->orderBy('name'); 
    } 
])->paginate(15); 
+0

私は急いでいるので、私は(他のは日本である)2 launguageにmultiposted。 http://ja.stackoverflow.com/questions/27838/laravel5-1-%E3%83%AA%E3%83%AC%E3%83%BC%E3%82%B7%E3%83%A7% E3%83%B3-E3%E5%A4%9A%E5%AF%BE%E5%A4%9A-%E3%82%BD%E3%83%BC%E3%83%88 –

答えて

0

このバリアントを試してみてください:

$articles = $this->article->with([ 
    'tags' => function($query) use ($flag, $tag){ 
     return $flag 
      ? $query->where("name", $tag); 
      : $query->orderBy("name")   
    } 
])->paginate(15); 
+0

ありがとうございました: ) しかし何も起こらなかった:( –

関連する問題