Laravel:hasMany还从父表获取值

时间:2018-08-23 10:34:25

标签: php laravel eloquent has-many

我是一名学生,是laravel的新手。

我正在使用hasmany,它的工作正常,但仅向我显示用户表中考勤表的结果,乔治在工作表中有5个条目,其工作正常,但我也想显示用户名和用户的所有详细信息在用户表

中可用

下面是我的代码:

AttendanceController:

 $attendance = Attendance::with('users')->WhereIn('aid',$arr)->get();

出勤模式:

public function users()
{
    return $this->hasMany('App\Attendance','aid','aid');
}

结果:

{
    "id": 1,
    "aid": 1,
    "date_in": "2018-08-03",
    "start": "09:27:00",
    "end": "18:27:00",
    "time_long": "08:59:00",
    "created_at": "2018-08-23 06:39:27",
    "updated_at": "2018-08-23 06:39:27",
    "users": [
        {
            "id": 1,
            "aid": 1,
            "date_in": "2018-08-03",
            "start": "09:27:00",
            "end": "18:27:00",
            "time_long": "08:59:00",
            "created_at": "2018-08-23 06:39:27",
            "updated_at": "2018-08-23 06:39:27"
        }
    ]
}

2 个答案:

答案 0 :(得分:1)

您的出勤关系模型是错误的,它应该与用户模型类有关系,而不是与您当前拥有的类本身有关系

出勤模式:

public function users()
{
    return $this->hasMany('App\Attendance','aid','aid');
}

应该指向用户模型:

public function users()
{
    return $this->hasMany('App\Users');
}

自从您加载用户以来,它还应该返回用户数据。

答案 1 :(得分:1)

您的关系是错误的。应该是用户有很多人出席,而不是相反。

出勤模式:

public function user(){
    return $this->belongsTo('App\User');
}

用户模型:

public function attendances(){
    return $this->hasMany('App\Attendance', 'user_id');
}

然后用您的$userId,执行以下操作:

$attendances = App\User::find($userId)->attendances;

针对您的问题:

我想您已经拥有$ userId吗? 在您的UserController中,您可以执行以下操作:

$user = User::find($userId);    //Find the user that has that id

假设您要在视图中使用它。然后执行以下操作:

return view('view-name', ['user' => $user]);    //pass $user to view

在您看来,请执行以下操作:

<ul>
    @foreach($user->attendances as $attendance)      <!--$user->attendances - You remember this?-->
        <li>{{ $user->name }} came to work on {{ $attendance->id }}</li>     <!--$user->name, $attendance->id - You can always get any other user/attendance attribute you want-->
    @endforeach
</li>

您可以查看here了解更多信息。