Php 拉雷维尔。setRelation(s)-仅添加最后一个关系
php:7.3.4Php 拉雷维尔。setRelation(s)-仅添加最后一个关系,php,laravel,eloquent,Php,Laravel,Eloquent,php:7.3.4 Laravel框架5.7.28 大家好。帮助为所有关系添加数据。 现在由于某种原因,只添加了最后一个关系。 setRelations的工作原理类似 代码 公共静态函数firstOrCreateModel(){ $cart=cart::firstOrCreate(self::getWhereQuery()); 如果($cart->delivery==1){ $cart->setRelation('np_area',$cart->with('npArea')->first();
Laravel框架5.7.28 大家好。帮助为所有关系添加数据。 现在由于某种原因,只添加了最后一个关系。
setRelations
的工作原理类似
代码
公共静态函数firstOrCreateModel(){
$cart=cart::firstOrCreate(self::getWhereQuery());
如果($cart->delivery==1){
$cart->setRelation('np_area',$cart->with('npArea')->first();
$cart->setRelation('np_city',$cart->with('npCity')->first();
$cart->setRelation('np_warehouse',$cart->with('npWarehouse')->first();
转储($cart->toArray());
}
返回$cart;
}
setRelation()不保存到数据库,只是为了测试。如果是多对多,最好使用sync(),如果是一对多,最好使用attach()我不需要保存任何数据。我需要在所选模型中加入一些关系。结果表明,该模型的输出仅为1个关系(最后一个关系),而不是3个关系。为什么要将购物车添加为购物车的关系?因为根据“交货”列中的值,我需要获取有关从事交货的公司办事处的信息。而且每家公司都有不同数量的表格。(例如,仅一个区域和部门=两个表,一个三)我需要查看交货字段中的值,然后获取将参与此订单交货的特定公司的相关数据。我不需要将数据输入关系数据库。我只需要准备模型,使它在前端以正确的形式飞行。嗯,由于参与交付的公司的办事处是通过api获得的,因此每个办事处都有自己的结构。不是每个人都有相同数量的表。我必须这么做,我明白。但是使用
$cart->with('npArea')->first()
我认为您没有做任何有用的事情$cart
已经是cart
并且带有('npArea')
将只加载关系,而不选择它。因此,$cart->with('npArea')->first()
的结果再次是cart
的一个实例,它似乎不是您想要设置为关系的东西?顺便问一下,有什么反对使用$cart->load('np_区域')
?