Funcion在其他功能中属于ToMany

时间:2017-10-16 21:38:32

标签: php laravel laravel-5

嗨我有我的功能

public function index(){
    $comments = ListsComments::orderBy( 'created_at', 'asc' )->where('is_admin_reply', 0)->get();
    return view( "admin.lists.comments.index", compact( 'comments' ) );
}

这给了我所有的评论,但我只想要列表的评论这是我的ListsComments模型

public function list(){
    return $this->belongsToMany('App\Models\Lists', 'list_has_comments' , 'comment_id', 'list_id');
}

在刀片中我称他为$ comment->列表,但是如何给我所有的评论和一些评论不是很好的列表给我错误,我明白我需要调用列表来调用函数列表在哪里指定表list_gas_comments但我不知道如何使用funcion index,regads。

2 个答案:

答案 0 :(得分:0)

您可以使用with()

实现此目的
public function index(){
$comments = ListsComments::with(['list'=> function($q){
   $q->first();
}])->orderBy( 'created_at', 'asc' )->where('is_admin_reply', 0)->get();
return view( "admin.lists.comments.index", compact( 'comments' ) );
}
你也可以实现这一点。 $comment->list->first();

我不是第二种方法,但你可以尝试一下。

我希望这会有所帮助。

答案 1 :(得分:0)

感谢您的帮助,但这不起作用,最后我使用join来保存表并可以访问用户并列出xD

public function __construct(){
    parent::__construct('list');
}

public function __construct($relatedTable = ''){
    $this->relatedTable = $relatedTable;
}

public function adminComments(){
    $related = $this->relatedTable;
    $relationshipTable = $related . '_has_comments as relation';
    $relatedPlural = $related . 's as related';

    return DB::table('comments')
        ->join($relationshipTable, 'comments.id', '=', 'relation.comment_id')
        ->join($relatedPlural, 'relation.list_id', '=', 'related.id')
        ->join('users', 'relation.user_id', '=', 'users.id')
        ->select('*');
}

public function index(){
    $listComment = new ListsComments();
    $comments = $listComment->adminComments()->paginate(10);
    return view( "admin.lists.comments.index", compact( 'comments') );
}