簡體   English   中英

具有兩列的同一個表上的多個關系 Laravel

[英]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_iddelivery_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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM