php - 将 DB Join 查询转换为 Eloquent 关系
问题描述
我的用户模型中有以下功能:
public function getInterests()
{
return $this->hasMany('App\Interest')->get();
}
public function getGifts()
{
return DB::table('gifts')
->join('sent_gifts', function ($join) {
$join->on('gifts.id', '=', 'sent_gifts.gift_id')
->where('user_2', $this->id);
})
->join('users', function ($join) {
$join->on('users.id', '=', 'sent_gifts.user_1');
})
->get();
}
我不明白如何创建复杂的 Eloquent 关系,但我想使用 Eloquent ORM 的所有优点,例如访问器和日期上的碳实例。
我将如何将我的getGifts()
功能转换为雄辩的关系?
PS:我已经创建了App\User、App\Gift和App\SentGift模型。
解决方案
你可以这样使用。这是我的关系。
用户模型
class User extends Eloquent {
protected $table = 'users';
public function posts() {
return $this->hasMany('App\Post');
}
}
后模型
class Post extends Eloquent {
protected $table = 'posts';
public function comments() {
return $this->hasMany('App\Comment');
}
}
并查询使用如下..
User::with('posts.comments')->get();
推荐阅读
- dropdown - DirectUS 8 清空下拉字段项
- powershell - 如何改进或优化 Powershell 中的特定 Invoke-WebRequest?
- code-coverage - Codecov 中的路径修复:某些文件无法正常工作
- c++ - 无法在 GLFW C++ Visual Studio 2019 中设置窗口图标
- postgresql - Kubernetes 上的 PostgreSQL-HA 从卷快照恢复?
- ios - @NSManaged 属性线程安全吗?
- swift - Swift - UISearchController 不激活 - 没有光标 - 没有键盘
- python - Pandas - 根据多个范围分配字符串值
- android - Jetpack 撰写列表在重新排序或过滤后选择了错误的项目
- php - Laravel 8 迁移未找到迁移表