larvalでhasManythrough関係を使用する際に問題が発生しています。ちょうどである、そこに例を使用してドキュメントを次Laravel withManyThrough関係の問題
countries
id - integer
name - string
users
id - integer
country_id - integer
name - string
posts
id - integer
user_id - integer
title - string
ここでは、私はここでモデルにおける関係
<?php
namespace App;
use Illuminate\Database\Eloquent\Model;
class Country extends Model
{
public function posts() {
return $this->hasManyThrough('App\Post', 'App\User', 'user_id', 'country_id', 'id');
}
}
を設定する方法であるUserモデルは
ここclass User extends Authenticatable
{
use Notifiable;
/**
* The attributes that are mass assignable.
*
* @var array
*/
protected $fillable = [
'name', 'email', 'password',
];
/**
* The attributes that should be hidden for arrays.
*
* @var array
*/
protected $hidden = [
'password', 'remember_token',
];
public function posts() {
return $this->hasMany('App\Post');
}
public function country() {
return $this->hasOne('App\User');
}
}
です投稿モデルです
<?php
namespace App;
use Illuminate\Database\Eloquent\Model;
class Post extends Model
{
public function user() {
return $this->belongsTo('App\User');
}
}
したがって、ウェブサイトは、国モデルを通じた投稿の抽出方法に関する詳細な説明は行っていません。 routesファイルを使用して、これは私が正しくドキュメントが言うに道を関係を設定するようですが、私には見えます私は
Route::get('posts/countries/{id}', function($id) {
$countries = App\Country::where('id', $id)->get();
return $countries->posts;
});
を使用したクエリです。ユーザーテーブルにcountry_idがあるので、クエリが間違っているかどうか、または間違ってリレーションシップを設定したかどうかはわかりません。