2016-11-16 14 views
0

多対多リレーションシップとピボットテーブルを持つ2つのテーブルLaravelクエリービルダーからデータを取得して、関係なし

表1:ツアー| id |名前| country_id |
表2:国| id |名前| ピボットテーブル: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) 
+0

ここのカテゴリではどういう意味ですか?最後には何をしたいですか? –

+0

間違った列を照会しているようですが、 'tour'表には' category'列がありません。そしてなぜあなたはツアーテーブルに 'country_id'カラムを持っていますか、ここでは意味がありません。 –

+0

はい、実際には私は間違いをしました。今私は訂正をしましたが、まだエラーが発生しています。ピボットテーブルからデータを取得するにはどうすればよいですか? elequentモデルはデータを取得するのに役立ちますか? –

答えて

0

を取得しています。多対多は、belongsToManyではなく、hasAndBelongsToManyとなります。しかし、あなたの質問の問題は異なっています。 toursテーブルには、既存のcategory列がありません。ところでDB::table('tours')->where()の代わりに\App\Tour::where()を使用することができます。それはモデルクラスのためのものです。

関連する問題