从具有elquent关系的Laravel查询构建器中获取数据

时间:2016-11-16 16:54:58

标签: php mysql laravel laravel-5.3 laravel-blade

我有两个包含多对多关系和数据透视表的表

表1:旅游| id |名字| country_id |
表2:国家| id |名字| Piviot表:country_tour | id | country_id | tour_id |

模型1 Tour.php

   public function country()
{
    return $this->belongsToMany('App\Country');
}

模型2 Country.php

    public function tours()
{
    return $this->belongsToMany('App\Tour');
}

如何使用查询构建器获取数据。我正在尝试这个

$featured = DB::table('tours')->where('country', 'Croatia')->get();

我收到错误

SQLSTATE[42S22]: Column not found: 1054 Unknown column 'country' in 'where clause' (SQL: select * from `tours` where `country` = Croatia)

2 个答案:

答案 0 :(得分:0)

我所看到的并不是多对多的关系。多对多将是hasAndBelongsToMany而不是belongsToMany。但是查询的问题是不同的。您的tours表没有现有的category列。顺便说一句,您可以使用\App\Tour::where()代替DB::table('tours')->where()。那是什么模型类。

答案 1 :(得分:0)

要利用雄辩的模型关系,您需要使用模型本身而不是数据库查询:

$croatia = App\Country::whereName('Croatia')->first();
$toursInCroatia = $croatia->Tours;