2016-11-20 35 views
2

案例:Laravel - 列出了保留和可用表

我工作的餐廳項目,並試圖列出在視圖中保留表和可用表。我能列出在特定的時間和日期,所有保留的表,但無法列出未保留其餘的表。

我有一個順序表是這樣的:

http://sqlfiddle.com/#!9/208543/2 

和RESTURANT表表:

http://sqlfiddle.com/#!9/7db56/1 

Laravel代碼

我有下面的代碼列出所有保留表:

$reserved = Order::where('date',$request->input('date')) 
       ->orWhere('time', $request->input('time')) 
       ->leftJoin('tables', 'ref_tableID', '=', 'tables.tableID') 
       ->get(); 

此代碼工作正常,但是當我嘗試例如更改操作員=
它不工作!

模式

表型號:

<?php 

namespace App; 

use Illuminate\Database\Eloquent\Model; 

class Table extends Model 
{ 
    protected $fillable = ['tableID','number','description','status','capacity']; 

     public function orders(){ 
      return $this->hasMany(App\Order); 
     } 
} 

Order表:

<?php 

namespace App; 

use Illuminate\Database\Eloquent\Model; 

class Order extends Model 
{ 
    protected $fillable = ['orderID','time','date','personID','cartID','foodID','drinkID','tableID']; 

    public function tables(){ 
     return $this->hasOne('App\Table'); 
    } 

} 

有人可以幫我列出了未預約剩餘的表?

+0

什麼代表*保留*表?訂單記錄? – snh

+0

棒到約定表和列名,即名爲'id'主鍵,以及「snake_case」(即'cart_id')。當與Eloquent模型和關係一起工作時,它會讓你的生活更輕鬆。 –

回答

0

如果我理解正確的,你想獲取什麼都沒有訂單,其中訂單保留記錄。如果是這樣,doesntHave方法是使用你的。

我不太明白你的表的邏輯,也沒有什麼定義預留表,你爲什麼要手動左側的接合部進行直接利用的關係,而不是,但這種方法適用於查找記錄不具有相關記錄,所以請嘗試並將其應用於您的邏輯。

$available_tables = Table::doesntHave('orders')->get();

或者更具體的東西到你的需求:

$available_tables = Order::doesntHave('tables') 
         ->where('date',$request->input('date')) 
         ->orWhere('time', $request->input('time')) 
         ->get(); 
+0

非常感謝您的及時回覆。我注意到我的解釋很混亂,特別是當我的模型由於複製粘貼而錯誤時。無論如何,我設法讀了你的doesntHave建議,我的問題解決了! – user2925977