문제

내에서 두 테이블 Laravel 와 연결되어 있고 피벗이다.두 테이블 usersroles, 고 피벗 테이블이 불 role_user.테이블도 포함되어 두 가지 추가 필드: startstop.이 방법을 추적할 수 있는 역할 user 은 과거에 있었다.

지금 내가 원하는 쿼리를 만드는 모두 가져옵니다 users 누가는 현재 role_id = 3.

첫 번째 사용 WherePivot, 지만,분명히는 도청.

나는 지금은 다음과 같은 사용하는 질 Eloquent:

Role::with('User')
    ->where('id', '=', '3')
    ->where('role_user.start', '<', date('Y-m-d'))
    ->where('role_user.stop', '>', date('Y-m-d'))
    ->whereHas('users', function($q){
        $q->where('firstname', 'NOT LIKE', '%test%');
    })
    ->get();

그러나 어떻게든 내가 오류가 발생하는 열의 시작 파일럿 테이블을 찾을 수 없습니다.그러나 나는에서 확인할 수 있습니다 PHPMyAdmin 는 열이있다.

이것은 전체 오류가:

Illuminate \ Database \ QueryException
SQLSTATE[42S22]: Column not found: 1054 Unknown column 'klj_role_user.start' in 'where clause' (SQL: select * from `klj_roles` where `id` = 3 and `klj_role_user`.`start` < 2014-06-02 and `klj_role_user`.`stop` > 2014-06-02 and (select count(*) from `klj_users` inner join `klj_role_user` on `klj_users`.`id` = `klj_role_user`.`user_id` where `klj_role_user`.`role_id` = `klj_roles`.`id` and `firstname` NOT LIKE %test%) >= 1)

할 수 있는 경우 누군가가 나에게 내가 뭔가 잘못된 또는 나에게 힌트를 어디서 나는 지금 보는?

도움이 되었습니까?

해결책

이 오류는 당신을 말하고 있는 응용 프로그램 start 열 pivot table klj_role_user.당신이 무엇을 해야 할 만들의 열입니다.는 경우 열이 이미 있는지 확인을 사용하고 있는 정확한 데이터베이스입니다.

나 또한 간체의 쿼리합니다.당신이 정말로 필요하지 않 a whereHas 지 않기 때문에 제한하려고 당신의 역할을 사용자에 의해 연결되지만,id,이 경우에,당신은 당신을 사용하는 3.A with() 을 것이 완벽하게 작동하는 벌금과 wherePivot() 을 할 수있는 나를 위해 함께 사용될 때 with().

$role = Role::with(array('users' => function($q)
{
    $q->wherePivot('start', '>', date('Y-m-d H:i:s'));
    $q->wherePivot('stop', '<', date('Y-m-d H:i:s'));
    $q->where('firstname', 'NOT LIKE', '%test%');
}))->find(3);


foreach($role->users as $user) {
    echo $user->firstname;
}
라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top