2016-11-20 17 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