2017-12-21 3 views
-1

나는 내 DB에서 다음 테이블이 있습니다

연결
Laravel 웅변

소유자
ID

객실을 room_id OWNER_ID

ID를
ID
room_number 내가 owner_id를 통해 내 연결 테이블에서 room_number 참조 할

. 나는 hasManyThrough 릴레이션으로 시도했지만, 반대의 방식으로 (테이블에서 커넥션 테이블의 필드로) 작동한다. 어떻게하면 관계를 구축하고 어떤 종류의 관계를 App \ Connections에 넣어야합니까?

+0

정확하게 무엇을 가지고 있습니까? (ID는 무엇입니까?) 정확히 무엇을 얻고 싶습니까? –

+0

나는 그 (것)들 사이 관계에 상기 테이블이있다. 따라서 연결 테이블은 소유자 테이블에 대한 액세스 권한을 가지며 소유자 테이블은 회의실 테이블에 대한 액세스 권한을 갖습니다. 하지만 지금은 room_number를 연결 테이블에 넣고 싶습니다. 예 : connections-> owners-> rooms-> room_number (하지만이 방법으로는 작동하지 않는다는 것을 알고 있습니다.) – Patryk

답변

0

내가 그것을 가지고있다. 나는에 아래 라인을 추가 할 때 지금
Connections.php

public function owners() 
{ 
    return $this->belongsTo('App\Owners', 'owner_id'); 
} 

Owners.php

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

public function rooms() 
{ 
    return $this->belongsTo('App\Rooms', 'room_id'); 
} 

Rooms.php

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

과 : 나는 앱에서 다음과 같은 관계를 넣어했다 내 ConnectionsController.php

$connections = Connections::with('owners')->paginate(5); 

내 index.blade 작성에 참조 할 수 있습니다 : 소란에 대한

@foreach($connections as $element) 
    {{ $element->owners->rooms->room_number }} 
@endforeach 

@AlexeyMezenin 죄송합니다.

0

제대로 이해했다면 연결 ID가 있고 방 번호를 얻고 싶습니다.

먼저 관계를 정의하십시오.

public function owners() 
{ 
    return $this->hasMany(Owner::class); 
} 

모델 Owner에서 : Room 모델에서

public function connections(); 
{ 
    return $this->hasMany(Connection::class); 
} 

연결 ID에 의해 방 번호를 얻으려면 :

$connectionIds = [12, 15, 20]; 
$roomNumbers = Room::whereHas('owners.connections', function($q) use($connectionIds) { 
     $q->whereIn('id', $connectionIds); 
    })->pluck('room_number'); 
+1

@Patryk B 귀하의 질문에 답변해야하므로 내 게시물을 삭제했습니다. – HCK

+0

@AlexeyMezenin 나는 당신의 솔루션이 효과가 있다는 것을 확신하지만, 내 의견으로는 room_number를 더 쉽게 얻을 수있는 아이디어를 아래에 두었습니다. – Patryk