Как получить доступ к данным сводной таблицы (отношение многие ко многим laravel) - PullRequest
0 голосов
/ 02 февраля 2020

Я пытаюсь получить данные из сводной таблицы и передать их с помощью jquery ajax. Я хочу получить название книги и количество ее.

Моя модель

class Order extends Model
{
    public function books(){
        return $this->belongsToMany(Book::class)->withPivot('quantity');
    }

}


class Book extends Model
{

    public function order(){
        return $this->belongsToMany(Order::class)->withPivot('quantity');
    }

}

Это мой контроллер

public function detail($id){
        if($id){
            $order = Order::find($id);
            dd($order->books);
        }
    }

Я не знаю, почему он вернул

Illuminate\Database\Eloquent\Collection {#350 ▼
  #items: []
}

Моя сводная таблица (book_order )

id | order_id | book_id | quantity

Ответы [ 2 ]

0 голосов
/ 02 февраля 2020

По сути, я предположил, что у вас есть таблица, подобная этой:

**books** 
id 
name

**orders** 
id 

**quantity**
book_id
order_id 

Модели:

class Order extends Model
{
    public function books(){
        return $this->belongsToMany(Book::class,'quantity');
    }

}

class Book extends Model
{

    public function orders(){
        return $this->belongsToMany(Order::class,'quantity');
    }

}

Попробуйте получить отношение как это:

$books = $order->books()->get();
0 голосов
/ 02 февраля 2020

Вы можете извлечь столбец quantity из сводной таблицы book_order, используя:

class Order extends Model
{
    public function books(){
        return $this->belongsToMany(Book::class)
        ->withPivot([
            'quantity',
        ]);
    }
}


class Book extends Model
{
    public function order(){
        return $this->belongsToMany(Order::class)
        ->withPivot([
            'quantity',
        ]);
    }
}

Использование

//Controller
public function detail($id){
   if($id){
      //Eager Load
      $orderWithBooks = Order::with('books')->find($id);
      foreach ($order->books as $book) {
         $quantity = $book->pivot->quantity;
         dump($quantity);
      }
   }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...