gpt4 book ai didi

mysql - Laravel:从数据库中选择

转载 作者:行者123 更新时间:2023-11-29 02:41:40 24 4
gpt4 key购买 nike

在我的 Laravel 应用程序中,我有两个表:

Projects
- id
- user_id
- name
- etc...

Images
- id
- project_id
- url

我如何实现它,以显示每个用户拥有的所有项目和所有连接的图像(每个项目最多可以有 20 个图像(存储在 FTP 中)和字段 URL 中的链接 - 表“项目”中的 project_id 将保存在字段 images.project_id) 中?

我了解到,我可以像这样展示项目:

$projects = DB::table('projects')->where('user_id','=',$user->id)->get();

我试过

$images = DB::table('images')->where('project_id','=',$projects->id)->get();

但我收到一条错误消息:

Property [id] does not exist on this collection instance.

我错过了什么?感谢您为我指出正确的方向:-)

亲切的问候,

斯特凡

最佳答案

对于你的问题,我建议使用 eloquent就像设置模型一样

class Project extends Model
{
public function images()
{
return $this->hasMany(\App\Models\Image::class, 'project_id');
}

public function user()
{
return $this->belongsTo(\App\Models\User::class, 'user_id');
}
}

class Image extends Model
{
public function project()
{
return $this->belongsTo(\App\Models\Project::class, 'project_id');
}
}

现在要查找带有图像的项目,您可以查询为

$projects = Project::with('images')->get();

$projects 中的每个对象都有其相关图像的集合。

要为用户添加过滤器,您可以在关系上使用 whereHas

$projects = Project::with('images')
->whereHas('user', function ($query) use ($user) {
$query->where('id', '=', $user->id);
})->get();

关于mysql - Laravel:从数据库中选择,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50612084/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com