2017-09-15 214 views
1

我有一个餐厅表和一个优惠表。一家餐厅可能有多个优惠。我正尝试使用hasMany()方法创建Restaurant - Offers之间的关系。Laravel雄辩一对多关系

表结构:

1)餐厅

  • ID

  • 餐馆名称

2)提供

  • offer_id

  • restaurant_ID

  • OFFER_PRICE

代码:在餐厅模型正在做这样的事情

<?php 
namespace App; 

use Illuminate\Database\Eloquent\Model; 


class Restaurant extends Model 
{ 


    public function offer(){ 

     return $this->hasMany('Offer'); 
    } 
} 

和观点,我想打印在视图中使用

下面的代码

foreach ($restaurants_data as $key => $value) { 

     print_r($value->offer); 
    ?> 

路线码结果:

Route::get('/home/restaurants',function(){ 
    $restaurants = DB::table('restaurants')->simplepaginate(3); 
    return view('restaurants',['restaurants_data'=>$restaurants]); 
}); 

enter image description here

,但我没有得到报价数据,我在哪里出错。谢谢。

+0

你没有做什么用'$值 - > offer' ... – Devon

+0

@Devon我试图做的print_r。我已更正问题 – adi

+0

我建议您不要使用视图来调试或测试模型。尝试编写测试用例或使用'artisan修补程序'。 – Devon

回答

1

如果你想在模型中定义的关系,你必须使用型号:

$restaurants = \App\Restaurant::simplePaginate(3); 

查询生成器不返回模型实例,它返回stdClass的对象。

+0

我试过了,但对我没有用。 我为如下路线: 路线::得到( '/家庭/餐厅',函数(){// $餐厅= DB ::表( '餐馆') - > simplepaginate(3); $ restaurants = \ App \ Restaurant :: simplePaginate(3); return view('restaurants',['restaurants_data'=> $ restaurants]); }); – adi

+0

这就是房产$优惠不确定的原因,如果您有其他问题,请为此提出一个新问题。 – Devon

+0

增加了另一个问题https://stackoverflow.com/questions/46240903/issue-querying-laravel-eloquent-relationship – adi

0

在模型改变这样的代码:

<?php 
namespace App; 
use Illuminate\Database\Eloquent\Model; 
class Restaurant extends Model 
{ 
    public function offer(){  
     return $this->hasMany('Offer','restaurant_ID','id'); 
    } 
} 
+0

我试过这种方式,但没有奏效。 – adi