Laravel 关系 HasMany

Laravel relationship HasMany

我保留了属于一个用户的多个地址记录。但是当我用 dd 写入时,我无法访问其他 table 的数据。

按照我的代码:

user Table

id |    name       | country |
--- --------------  ----------   

7  | Mr. Lenny Bins| Belgium
2  | Dalton Miller | Swaziland

address Table

user_id | address         
-------- ---------
7       | 740 Brown Greens Suite  
7       | 9906 Cleora Wall Apt.      
2       | 53977 Kip Center Apt

UserModel

 public function getAddress()
    {
        return $this->hasMany(Address::class);
    }

UserController

$users = User::where('id' ,7)->with('getAddress')->get();

dd($users->toArray());
// The output of this is below

dd($users->getAddress->toArray());

当我这样尝试时出现错误。

属性 [getAddress] 在此集合实例上不存在。

$users = User::with('getAddress')->where('id' ,7)->first();

dd($用户);

首先,您使用的是 return 收集的 get,接下来您将获取所有用户及其地址。

$users = User::where('id' ,7)->with('getAddress')->get();

您可以使用 first() 而不是 get(),因为您只找到一个用户

$user = User::where('id' ,7)->with('getAddress')->first();

如果您只想使用该用户的地址

dd($user->getAddress)

或者如果你只想以数组的形式使用

dd($user->getAddress->toArray())

用户模型

public function getAddress()
{
  return $this->hasMany('App\Address');
}

获取用户

$users = \App\User::with('getAddress')->where('id' ,7)->get();

迭代并读取数据

foreach ($users as $user) {
  echo '<pre>' , var_dump($user->getAddress()->first()['address']) , '</pre>';
}