Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/laravel/10.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 5.3中以一对多关系访问数据?_Laravel_Laravel 5.3 - Fatal编程技术网

如何储存&;在laravel 5.3中以一对多关系访问数据?

如何储存&;在laravel 5.3中以一对多关系访问数据?,laravel,laravel-5.3,Laravel,Laravel 5.3,我有以下数据库表结构 users table id mobile name devices id user_id device ip active 一个用户可以有多个设备,用户可以从这些设备登录 现在的问题是如何存储和访问特定用户的设备 例如,用户sam('id',1)有两个设备android('user_id',1)和iphone('user_id',1)。因此,当用户来登录时,我将拥有手机号。要从用户表中获取特定用户的id,然后我将根据从上一次查询中获得

我有以下数据库表结构

users table
  id
  mobile
  name

devices
  id 
  user_id
  device
  ip
  active
一个用户可以有多个设备,用户可以从这些设备登录

现在的问题是如何存储和访问特定用户的设备 例如,用户sam('id',1)有两个设备android('user_id',1)和iphone('user_id',1)。因此,当用户来登录时,我将拥有手机号。要从用户表中获取特定用户的id,然后我将根据从上一次查询中获得的用户id在设备表上运行另一次查询,我有设备相关数据

但我知道我错了。另一种方式是什么?当我要存储用户和相关设备时也会发生同样的情况。首先我存储用户,然后通过获取id为同一用户存储设备

这是我的User.php模型

class User extends Model
{
   protected $fillable = ['mobile','name'];

   public function device(){

    $this->hasMany('App\Device','tempuser_id');
   }
}
请告诉我如何使用雄辩的一对多关系来处理此问题。在模型中

public function devices()
{
    return $this->hasMany('App\Device','user_id', 'id');
}
向用户添加设备

$user->devices()->save($device);
获取设备

foreach($user->devices as $device)
{
     // device here
}
模型中

public function devices()
{
    return $this->hasMany('App\Device','user_id', 'id');
}
向用户添加设备

$user->devices()->save($device);
获取设备

foreach($user->devices as $device)
{
     // device here
}

要为特定用户保存设备,可以使用

public function add(Request $request){
  $device= new \App\Device;
  $device->user_id = $request->user()->id;
  $device->device = $request->device;
  $device->ip = $request->ip;
  $device->active =$request->active;
  $devices->save();
}
要为用户检索设备,请写入控制器

$devices = \App\User::find(Auth::user()->id)->devices;

要为特定用户保存设备,可以使用

public function add(Request $request){
  $device= new \App\Device;
  $device->user_id = $request->user()->id;
  $device->device = $request->device;
  $device->ip = $request->ip;
  $device->active =$request->active;
  $devices->save();
}
要为用户检索设备,请写入控制器

$devices = \App\User::find(Auth::user()->id)->devices;

我在controllerpublic函数demo()中做了这件事,{$user=new user;foreach($user->devices as$device){return$device;}}并且得到了错误“Relationship方法必须返回一个类型为illumb\Database\Eloquent\Relations\Relationship”的对象,哦,对不起,模型是
return$this->hasMany('App\device',user\u id',id')
return
是missedi在controllerpublic函数demo()中这样做的({$user=new user;foreach($user->devices as$device){return$device;}}}并且出现了错误“Relationship方法必须返回一个类型为illumb\Database\elount\Relations\Relations”的对象哦,对不起,模型是
return$this->hasmall('App\Device'、'user\u id'、'id')
返回
未命中,但如果我没有用户id,我只有用户的手机号码,并在此基础上获取特定用户的id。在上面的这里,您在保存设备时没有提到任何id。首先,我们不需要在保存数据时传递id,因为它应该具有自动递增的属性。要访问设备e对于用户的手机号码,您可以使用
$devices=\App\user::where('mobile','mobile number')->first()->设备;
但是用户的记录已经在用户表中,我稍后会为该用户保存设备。那么我如何知道id。设备id与用户id不同。每个设备都有一个唯一的id。请参阅上面代码的第三行,我正在存储用户的id,该用户当前登录到设备模型。此
$request->用户()->id;
返回当前登录用户的id。这就是我试图向您解释的。您正在考虑的id并非如此。用户将通过手机号和otp登录,在otp验证时,我正在存储用户设备。因此,我需要有用户id,以便可以将其存储在设备表中的设备上。但如果我没有用户id我只有用户的手机号,在此基础上我获取特定用户的id。在上面的这里,您在保存设备时没有提到任何id。首先,我们不需要在保存数据时传递id,因为它应该具有自动递增的属性。要使用用户的手机号访问设备,您可以使用
$devices=\App\User::where('mobile','mobile number')->first()->设备;
但是用户的记录已经在用户表中,我稍后会为该用户保存设备。那么我如何知道id。设备id与用户id不同。每个设备都有一个唯一的id。请参阅上面代码的第三行,我正在存储用户的id,该用户当前登录到设备模型。此
$request->user()->id;
返回当前登录用户的id。这正是我试图向您解释的。您考虑的id不是真实的id。用户将通过手机号和otp登录,在otp验证时,我正在存储用户设备。因此,我需要有用户id,以便可以将其存储在设备表中的设备上。