我在幼蟲中使用hasManythrough關係存在問題。只要後續的使用例如,有文檔,它們是:Laravel的問題有很多關係
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');
}
}
這裏的關係是用戶模型
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');
}
}
因此,該網站沒有詳細瞭解如何通過國家模式提取帖子。使用路由文件,這是我用
Route::get('posts/countries/{id}', function($id) {
$countries = App\Country::where('id', $id)->get();
return $countries->posts;
});
查詢它看起來對我來說,我建立關係正確的文檔說的方式。用戶表上有一個country_id,所以我不確定查詢是錯誤的還是我確實錯誤地設置了關係。