[英]Multiple relationships on same table with two column Laravel
如果書店沒有存貨,本店可以從簽約的其他書店購買圖書。
book_transfers表如下。
ID | sender_bookstore_id | delivery_bookstore_id
1 | 2 | 3
2 | 1 | 2
3 | 3 | 1
書桌
ID | store_name
1 | London Garden Book Store
2 | Englaland Cafe Book
3 | Domesday Book Store
兩列sender_bookstore_id
和delivery_bookstore_id
屬於同一個表。 此表書籍的名稱。
我的 Controller 代碼如下:
$data = BookTransfer::join('books', 'books.id', '=', 'book_transfers.sender_bookstore_id')
->select(
'book_transfers.*',
'book_transfers.sender_bookstore_id as sender_id',
'book_transfers.delivery_bookstore_id as delivery_id',
'books.store_name as sender_store_name'
)
->groupBy('book_transfers.id')
->get();
return $data;
我這里只能獲取sender_store_name
。 我需要在上面的 controller 中為delivery_store_name
添加額外的代碼,但我不知道如何獲取delivery_store_name
。
最好的祝福,
使用關系會簡單得多。
// BookTransfer Model
public function sender(){
return $this->belongsTo(Book::class, 'sender_bookstore_id');
}
public function delivery(){
return $this->belongsTo(Book::class, 'delivery_bookstore_id ');
}
你的 controller 看起來像這樣
$data = BookTransfer::with(['sender', 'delivery'])->get();
如果你想通過join
獲取數據,你可以再次join
同一個books
表,並為它起另一個名字:
BookTransfer::join('books AS sender_books', 'sender_books.id', '=', 'book_transfers.sender_bookstore_id')
->join('books AS delivery_books', 'deliery_books.id', '=', 'book_transfers.delivery_bookstore_id')
->select(
'book_transfers.*',
'book_transfers.sender_bookstore_id AS sender_id',
'book_transfers.delivery_bookstore_id AS delivery_id',
'sender_books.store_name AS sender_store_name',
'delivery_books.store_name AS delivery_store_name'
)
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.