我有两个这样的模型:
用户:
id - username
图像:
id - img - user_id
每个用户都有很多图片。所以听起来我应该使用hasMany
关系。
我知道如果我有一个用户列表,我该如何使用。现在如何按用户名显示图像列表:
图片列表:
img - username
User
模型中的:
public function image()
{
return $this->hasMany('Image');
}
Image
模型中的:
public function user()
{
return $this->belongsTo('User');
}
答案 0 :(得分:2)
用于获取用户图像的更多“laravel-way”解决方案将类似于:
$users = App\User::with('image')->get();
这将返回带有图像的用户集合。从那时起,您可以遍历用户并显示这样的图像(在您的视图中):
@foreach($users as $user)
<ul>
@foreach($user->images as $image)
<li>{{ $image }}</li>
@endforeach
<ul>
@endforeach
答案 1 :(得分:1)
试试这个:
DB::table('users')
->join('images', 'images.user_id', '=', 'users.id')
->orderBy('users.username')
->groupBy('users.username')
->get();
好的然后试试这个:
$users = App\User::all();
foreach ($users as $user) {
$temp = App\UserImage::where('userId',$user->id)->get();
$user['images'] = $temp;
}
return $users;
答案 2 :(得分:0)
由于用户拥有多个图像,因此在命名约定中会在用户模型中建立关系images()
。
然后,这将为所有用户提供他们的图像。
$users=User::with('images')->get();
foreach($users as $user)
{
print_r($user->username);
foreach($user->images as $image)
{
print_r($image);
}
}
答案 3 :(得分:0)
这会将Image模型引入您的用户查询。它按用户对结果进行分组。
$userImages = User::with('image')->groupBy('id')->get();
由于您已启动用户和图片,因此您可以使用id和user_id查询“id”,“username”,“img_id”或“img”字段来查询这两个字段。
这是用户。
$userImages ->id->username
按用户返回图像
foreach($userImages as $userImage)
{
$userImage->image->user_id->img;
}