2017-12-13 13 views
1

laravel eloquent를 사용하여 2 개의 테이블을 결합하고 싶습니다. 나는 쉽게 이것을 mysql에서 할 수 있지만 이것을 사용하지는 못한다.Laravel Eloquent가 2 개의 테이블을 함께 결합합니다.

나는이 다음과 같은 방법을 포함 device.php라는 모델이 있습니다

public function wifi_client_connection(){ 
    return $this->hasMany('UserFrosting\WifiClientConnection'); 
} 

을하지만 난 열이 device_uuid라는 것을 열을 mac_address하지만 WifiClientConnection 나던라는 칼럼을 사용하여 WifiClientConnection.php 모델을 연결해야합니다. mac_address는 다음과 같은 방법을 사용하여 device_uuid로 변환 : MySQL의에서

public function getDeviceUUID(){ 
    return hex2bin(md5($this->mac_address . $this->number)); 
} 

내가 같이 함께 두 테이블을 조인 :

LEFT OUTER JOIN device ON wifi_client_connection.device_uuid = UNHEX(MD5(CONCAT(device.mac_address, device.number))) 

가 어떻게 그 사용 Laravel 웅변과 같은 작업을 수행 할 수 있습니다.

나는 또한 WifiClientConnection.php 모델에서 나는이 방법 그래서 라운드의 관계를 다른 방법이 필요합니다 :

public function device(){ 
    return $this->belongsTo('UserFrosting\WifiClientConnection'); 
} 

을하지만 다시 나는 일이 관계 mac_addressdevice_uuid을 변환 할 필요가

어떤 도움 주셔서 감사합니다

+0

당신이에있는 두 개의 테이블을 조인 할 것을 말하고있다 - - (https://laravel.com/docs/5.5/queries#joins) – Eric

+0

귀하의 질문이 명확하지 조금된다 Laravel QueryBuilder 조인]를 변환 된 컬럼? 나는이 방법으로 합류하는 대신 대리 외래 키를 사용하는 것이 좋습니다. – alexw

답변

0

변환 된 값이있는 열을 추가하면 관계를 만들 수 있습니다.

public function device(){ 

    return $this->belongsTo('UserFrosting\WifiClientConnection', 'device_uuid', 'new_column_with_converted_value'); 
} 
+0

'''device.php''를 호출 할 때 올바른 값을 가진'''device_uuid''' 컬럼이 있다고 생각하는 방법이 있습니까? –

+0

실제로'''device'' 테이블에 열을 추가하는 대신에 –

+0

나는 싫다고 말하고 싶지는 않지만 그렇게 생각하지는 않습니다. –