我的EloquentUserRepository
(具体实现)有一些方法,例如getCompanies($userId)
和getProfile($userId)
。
在这两种情况下,在返回内容之前,他们会抓取用户,如下所示:
$user = User::find($userId);
因此,当我需要在同一个请求中调用这两个方法时,数据将被提取两次。
我错过了什么或者我错误地使用了存储库吗?
答案 0 :(得分:0)
如果你从关系方面接近它会怎么样?我假设Companies
住在不同的桌子上。你能用这样的东西收购这些公司吗?
<?php
class User extends Model {
protected $table = 'users';
protected $fillable = ['name', 'email', 'avatar'];
protected $hidden = ['password', 'remember_token'];
public function companies()
{
return $this->hasMany('App\Company', 'user_id');
}
}
然后你可以找到这些公司:
$user = User::find($userId)->load('companies')->get();
你已经加载了这些公司。
如果配置文件位于不同的表中,您可以执行类似的关系,如下所示:
<?php
class User extends Model {
protected $table = 'users';
protected $fillable = ['name', 'email', 'avatar'];
protected $hidden = ['password', 'remember_token'];
public function profile()
{
return $this->hasOne('App\Profile', 'user_id');
}
}
我不确定这是否正是您所寻找的,但这是我喜欢在查找与特定型号相关的项目时使用的方法。