如果书店没有存货,这家书店可以从与其签约的另一家书店购买书籍。
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属于同一个表。这张桌子的名字是书。
我的控制器代码如下:
$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来这里。我需要在上面的控制器中为delivery_store_name.添加额外的代码,但是我不知道如何获得delivery_store_name
诚挚的问候,
发布于 2020-04-24 15:17:27
如果希望通过join获取数据,可以再次对同一个books表进行join,并将其别名为另一个名称:
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'
)发布于 2020-04-24 15:15:08
使用关系要简单得多。
// BookTransfer Model
public function sender(){
return $this->belongsTo(Book::class, 'sender_bookstore_id');
}
public function delivery(){
return $this->belongsTo(Book::class, 'delivery_bookstore_id ');
}你的控制器会像这样
$data = BookTransfer::with(['sender', 'delivery'])->get();https://stackoverflow.com/questions/61411263
复制相似问题