Laravel Eloquent将2张桌子加在一起

时间:2017-12-13 14:55:01

标签: php mysql laravel eloquent userfrosting

我想使用laravel eloquent将2个表连接在一起。我可以轻松地在mysql中执行此操作但不知道使用它。

我有一个名为device.php的模型,它包含以下方法:

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

但是我需要使用名为WifiClientConnection.php的列链接mac_address模型,但WifiClientConnection没有列,它有一个名为device_uuid的列。 mac_address使用以下方法转换为device_uuid

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

在MySQL中,我将这两个表连接在一起:

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

如何使用Laravel Eloquent做类似的事情。

我还需要相反的关系,所以在WifiClientConnection.php模型中我有这个方法:

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

但我需要将device_uuid转换为mac_address才能使此关系正常工作

感谢您的帮助

1 个答案:

答案 0 :(得分:0)

我会添加一个包含转换值的列,然后您可以创建关系。

public function device(){

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