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

时间:2016-10-20 14:34:31

标签: 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,我将在用户的id上运行设备表上的另一个查询,这是我从之前的查询获得的,并且我有设备相关的数据。

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

这是我的User.php模型

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

   public function device(){

    $this->hasMany('App\Device','tempuser_id');
   }
}

请告诉我如何使用雄辩的一对多关系解决这个问题。

2 个答案:

答案 0 :(得分:1)

在模型中

public function devices()
{
    return $this->hasMany('App\Device','user_id', 'id');
}

将设备添加到用户

$user->devices()->save($device);

获取设备

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

答案 1 :(得分:1)

To save devices for a particular user, you can use

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();
}

And to retrieve devices for a user, write in your controller

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