Laravel: запрос таблицы «многие ко многим» - PullRequest
0 голосов
/ 24 сентября 2018

У меня есть приложение, в котором пользователи могут иметь несколько книг.Я установил связь и промежуточную таблицу.Но запрос не работает.

Модель книги

    public function user(){
    return $this->belongsToMany('App\Book', 'book_user');
    }

Модель пользователя

public function book(){
        return $this->belongsToMany('App\User', 'book_user');
    }

Создание миграции таблицы user_book:

  public function up()
    {
        Schema::create('book_user', function (Blueprint $table) {
            $table->increments('id');
            $table->integer('book_id')->unsigned();
            $table->foreign('book_id')->references('id')->on('books');

            $table->integer('user_id')->unsigned();
            $table->foreign('user_id')->references('id')->on('users');
        });
    }

Книгиконтроллер Я добавляю book_id и пользователя _id в таблицу

   public function readlist(Book $book)
    {
        DB::table('book_user')->insert(
            ['user_id' => auth()->id(), 
            'book_id' => request('book_id')]
        );

    }

В моем домашнем контроллере я пытаюсь получить доступ к книгам, связанным с пользователем, но мои результаты возвращают значение Null;

 public function index()
{   
    $user = Auth::user();
    $userbooks =$user->books;
    dd($userbooks);

    return view('/home');
}

Ответы [ 2 ]

0 голосов
/ 24 сентября 2018

У пользователя несколько книг,

В книге несколько пользователей,

Отношение много ко многим , лучше определить модель пользователя:

public function users(){
  return $this->belongsToMany('App\Book', 'book_user');
}

А в вашей Книге модель

public function books(){
    return $this->belongsToMany('App\User', 'book_user');
}

Ссылка на Документ: https://laravel.com/docs/5.7/eloquent-relationships#many-to-many

0 голосов
/ 24 сентября 2018

Сначала переименуйте метод book() в books() в вашей пользовательской модели:)

Затем вы можете попытаться сделать это:

public function readlist(Request $request)
    {
        Auth::user()
        ->books()
        ->attach($request->get('book_id'));

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