Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/laravel/11.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/jquery-ui/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
使用外键访问Laravel中的3个表(Laravel 6)_Laravel_Eloquent - Fatal编程技术网

使用外键访问Laravel中的3个表(Laravel 6)

使用外键访问Laravel中的3个表(Laravel 6),laravel,eloquent,Laravel,Eloquent,我想显示来自特定用户的数据库(sql)的数据 我有三张桌子: 使用者 商店 区域 以下是表之间的关系: 用户只有一个区域 这个地区有许多商店 基本上我想展示的是,每个用户都有自己的区域,有很多商店 用户模型 function area() { return $this->hasOne('App\Area'); } public function stores() { return $this->hasManyThrough(Store::class,

我想显示来自特定用户的数据库(sql)的数据

我有三张桌子: 使用者 商店 区域

以下是表之间的关系:

用户只有一个区域 这个地区有许多商店

基本上我想展示的是,每个用户都有自己的区域,有很多商店

用户模型

function area() {
    return $this->hasOne('App\Area');        
}
public function stores()
{
    return $this->hasManyThrough(Store::class, Area::class);
}
面积模型

 function user() {
    return $this->belongsTo('App\User');
}

function stores() {
    return $this->hasMany('App\Store');
}
商店模式

function area() {
    return $this->belongsTo('App\Area');
}
我的数据库如下所示:

用户表
id名称角色\u id区域\u id

面积表
id名称用户\u id

存储表
id名称区域\u id

如何访问用户->区域->商店

这就是我目前得到的

function show() {
    $id= Auth::user()->id;
    $user = User::find($id);
    echo($user->area->stores);
}

谢谢

您可以使用
hasManyThrough
获取某个区域的信息:

在用户模型中定义存储功能

function area() {
    return $this->hasOne('App\Area');        
}
public function stores()
{
    return $this->hasManyThrough(Store::class, Area::class);
}
并使用它:

$stores = auth()->user()->stores;

我希望有用。

用户表不应包含表区域的引用,即用户表中的area_id列。其余的都很好,应该可以工作。问题是什么?你是在做刀片还是api设计?定义“想展示”嗨,谢谢你的提问。用户表中没有区域id是正确的。通过使用hasManythrough关系,我终于成功了。谢谢你,上帝保佑。嗨,谢谢你抽出时间来帮忙。我只是尝试了一下,终于成功了。上帝保佑。