编辑:我正在使用API路由,所以我没有视图等等
我有一个像这样的数据库
User:
id
name
card:
id
card_number
user_id
swipe:
id
time
card_number
关系如下:用户有一张卡一张卡有很多刷卡
连接就是这样
user.id = card.user_id
card.card_number = swipe.card_number
在拉威尔,我有3个型号。
user
card
swipe
用户模型
class user extends Model
{
public function card()
{
return $this->hasOne('App\card','user_id','id');
}
}
如果我做了,在控制器中
$model = user::with('card')->get();
我按预期获得与用户数据连接的卡数据。
class card extends Model
{
public function person()
{
return $this->belongsTo('App\user');
}
public function swipe(){
return $this->hasMany('App\swipe','card_number','card_number');
}
}
如果我现在这样做
$ model = user :: with('card.swipe') - > get();
我希望通过他们的卡返回所有用户,并刷卡与该卡相关联。
但我得到的是
500内部服务器错误
我在这里做错了什么?
答案 0 :(得分:0)
例如,你可以这样使用。
$shares = DB::table('shares')
->join('users', 'users.id', '=', 'shares.user_id')
->join('follows', 'follows.user_id', '=', 'users.id')
->where('follows.follower_id', '=', 3)
->get();
答案 1 :(得分:0)
你不能这样使用,
user::with('card.swipe')->get();
使用有很多通过
https://laravel.com/docs/5.5/eloquent-relationships#has-many-through
user - countries (in docs)
card - users (in docs)
swipe - posts (in docs)
$country->posts;
$user->swipe;
答案 2 :(得分:0)
我不知道这是否是正确的解决方案,但您可以尝试:
public function swipe(){
return $this->hasMany('App\swipe')->where('card_number','card_number');
}
答案 3 :(得分:0)
您应该能够在控制器中提取数据,如下所示:
return user::with(['card' => function($query) {
$query->with('swipe');
}])->get();
确保您的滑动模型"属于(' App \ card')"。