2017-12-13 32 views
1

laravel雄弁を使って2つのテーブルを結合したいと思います。私は簡単にmysqlでこれを行うことができますが、これを使用して考えていない。Laravel Eloquentは2つのテーブルを結合します

私は、これは以下の方法が含まdevice.phpモデルと呼ばれています:

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

をしかし、私は列を使用してWifiClientConnection.phpモデルをリンクする必要がmac_addressと呼ばれるが、WifiClientConnection doesntのは、それがdevice_uuidという列があり、その列を持っています。 mac_addressは、以下の方法を使用してdevice_uuidに変換される:MySQLで

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

が、私はこのように一緒に2つのテーブルを結合:

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

[Laravel QueryBuilder - 参加] – Eric

+0

あなたの質問は少し不明である(https://laravel.com/docs/5.5/queries#joins) - あなたは、この上に2つのテーブルを結合したいと言っています変換された列?この方法で結合しようとするのではなく、代理外部キーを使用することをお勧めします。 – 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

私はいいえと言いたくはありませんが、私はそんなに仲間と思っていません –

関連する問題