как получить доступ к модели один-ко-многим в laravel, с доступом ко всем столбцам - PullRequest
1 голос
/ 27 марта 2020

Я создаю таблицу комментариев в моем проекте Laravel, чтобы пользователи могли комментировать продукты. Я хочу создать таблицу, которая может интегрироваться с моей пользовательской таблицей (например, отношение «один ко многим») в Laravel.

Вот мой код:

    public function buyproduct($id){
        $user = Auth::user();
        $users_comment = User::with('comments')->get();
        $comments =comments::orderBy('id','desc')->get();
        $renimage = Clothes::where('id',$id)->first();

        return view('pages.products',[
        'renimage'=>$renimage,
        'google_avater'=>$user,
        'comments'=>$users_comment
        ]);
    }

Здесь я отправить мои данные для просмотра в моем проекте. Я не понимаю, как получить доступ к данным, которые находятся в моей пользовательской таблице вместе с данными в таблице комментариев.

1 Ответ

0 голосов
/ 27 марта 2020

Сначала comments::orderBy... должно быть Comments::orderBy...,
Но вам это не нужно, так просто получить комментарии пользователей:

Первый метод: Использование с ()

Как только отношение будет определено, мы можем получить доступ к коллекции комментариев, используя свойство comments. Помните, поскольку Eloquent предоставляет «свойства Dynami c», мы можем получить доступ к методам отношений, как если бы они были определены как свойства в модели:

$books = App\Book::with('author')->get();

foreach ($books as $book) {
  echo $book->author->name;
}

Второй метод: Прямой

К счастью, мы можем использовать готовую загрузку, чтобы сократить эту операцию до 2 запросов. При запросе вы можете указать, какие отношения следует загружать с помощью метода with:

$comments = App\Post::find(1)->comments;

foreach ($comments as $comment) {
  //
}
В вашем случае:
public function buyproduct($id){
    $user = Auth::user();
    $users_comment = User::with('comments')->get();
    //blow line changed
    $comments =$users_comment->comments;
    $renimage = Clothes::where('id',$id)->first();

    return view('pages.products',[
    'renimage'=>$renimage,
    'google_avater'=>$user,
    'comments'=>$users_comment
    ]);
}

Надеюсь, это поможет;)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...