Nik*_*j V 4 php laravel eloquent
我正在使用 laravel 6 并使用 eloquent join 来显示来自多个表的数据。
考虑以下代码:
$ToGetDefaultAddress
= TbPersonaddress::join('tb_cities AS TbCitie','TbCitie.n_CityId_PK', '=', 'tb_personaddresses.n_CityId_FK')
->join('tb_counties AS TbCountie','TbCountie.n_CountyId_PK', '=', 'tb_personaddresses.n_CountyId_FK')
->join('tb_states AS TbState', 'TbState.n_StateId_PK','=' ,'tb_personaddresses.n_StateId_FK')
->select('tb_personaddresses.n_PersonAddressesId_PK','tb_personaddresses.n_PersonId_FK',
'tb_personaddresses.d_EffectiveDateFrom','tb_personaddresses.d_EffectiveDateTo',
'TbCitie.s_CityCode','TbCitie.s_CityName','TbCountie.s_CountyCode',
'TbCountie.s_CountyName','TbState.s_StateCode','TbState.s_StateName')->first();
dd("Actual output:::::",$ToGetDefaultAddress);
Run Code Online (Sandbox Code Playgroud)
如上面的代码所示,我将此输出存储在$ToGetDefaultAddress变量中。现在只得到了属性数据,都toArray()和getAttributes()回报我同样的结果。
例如:
$DefaultAddress = $ToGetDefaultAddress->toArray();
Run Code Online (Sandbox Code Playgroud)
和
$DefaultAddress = $ToGetDefaultAddress->getAttributes();
Run Code Online (Sandbox Code Playgroud)
我的问题是, usingtoArray()和 有getAttributes()什么区别?推荐哪一款?何时使用toArray(),何时使用getAttributes()?
让我们看一下源代码:
如果您查看它们,您将看到该toArray()方法返回具有关系和属性的完整模型,并且getAttributes()仅返回模型属性(通常仅返回列)。
这是来自 laravel 源代码的代码片段:
/**
* Convert the model instance to an array.
*
* @return array
*/
public function toArray()
{
return array_merge($this->attributesToArray(), $this->relationsToArray());
}
Run Code Online (Sandbox Code Playgroud)
我在源代码中看到了一种我不知道的方法。你也可以测试一下:
->attributesToArray()
| 归档时间: |
|
| 查看次数: |
1554 次 |
| 最近记录: |