[英]Multiple relationships on same table with two column Laravel
If the bookstore does not have any books in stock, this bookstore can purchase books from the other bookstore it is contracted with.如果书店没有存货,本店可以从签约的其他书店购买图书。
book_transfers table is as follows. book_transfers表如下。
ID | sender_bookstore_id | delivery_bookstore_id
1 | 2 | 3
2 | 1 | 2
3 | 3 | 1
books table书桌
ID | store_name
1 | London Garden Book Store
2 | Englaland Cafe Book
3 | Domesday Book Store
Two-column sender_bookstore_id
and delivery_bookstore_id
belong to the same table.两列
sender_bookstore_id
和delivery_bookstore_id
属于同一个表。 The name of this table books.此表书籍的名称。
My Controller code is below:我的 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;
I can only get sender_store_name
here.我这里只能获取
sender_store_name
。 I need to add extra code for delivery_store_name
in the above controller But I don't know how to get delivery_store_name
.我需要在上面的 controller 中为
delivery_store_name
添加额外的代码,但我不知道如何获取delivery_store_name
。
Best Regards,最好的祝福,
Using relation would be much more simpler.使用关系会简单得多。
// BookTransfer Model
public function sender(){
return $this->belongsTo(Book::class, 'sender_bookstore_id');
}
public function delivery(){
return $this->belongsTo(Book::class, 'delivery_bookstore_id ');
}
Your controller would look like this你的 controller 看起来像这样
$data = BookTransfer::with(['sender', 'delivery'])->get();
If you want to get the datas by join
, you can join
the same books
table again, and alias it another name:如果你想通过
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.