如何显示关系数据中的属性列表

时间:2016-10-05 13:01:37

标签: laravel laravel-5

我有两个这样的模型:

用户:

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');
}

4 个答案:

答案 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;
}