我正在使用symfony和doctrine.
服务器获取URL/company/{id}的HTTP PATCH请求,其中包含模型的属性及其值,例如{"name": "My new name"}需要将新值保存到DB中.
$request = Request::createFromGlobals();
$requestContentJSON = $request->getContent();
$requestContentObj = json_decode($requestContentJSON);
$repository = $this->getDoctrine()->getRepository('MyBundle:Company');
$company = $repository->find($id);
Run Code Online (Sandbox Code Playgroud)
现在我可以进入,$company->setName($requestContentObj[0]);但收到的财产会有所不同.现在我正在使用以下代码来处理每个属性:
foreach($requestContentObj as $key => $value){
switch($key){
case 'name':
$company->setName($value);
break;
case 'department':
$company->setDepartment($value);
break;
case 'origin':
$company->setOrigin($value);
break;
case 'headquarters':
$company->setHeadquarters($value);
break;
case 'email':
$company->setEmail($value);
break;
case 'twitterid':
$company->setTwitterId($value);
break;
case 'description':
$company->setDescription($value);
break;
}
}
Run Code Online (Sandbox Code Playgroud)
但这看起来并不聪明,特别是因为我知道我将拥有其他实体,如新闻,产品,用户等,这些实体将以相同的方式更新其属性.我想做这样的事情:
$company->set("property", "value");
Run Code Online (Sandbox Code Playgroud)
我首先想到的是将这个switch语句放在这个set函数中的公司类中,也放在我拥有的所有其他实体类中.但有更好的方法吗?也许symfony/doctrine已经内置了解决方案,但我找不到任何适合我的方法.
我仍然希望使用setter和getter作为长期投资.
谢谢.
我正在尝试使用 DKMS 来构建模块。我的问题是我似乎无法让 DKMS 通过正确的 ARCH 来“制作”。它一直使用我的操作系统内核的架构,即 armv7l。但是没有映射
/usr/src/linux/arch/armv7l
需要看里面
/usr/src/linux/arch/arm
我试过将 -a arm, -k 4.4.21-v7+/arm 作为参数传递给 'dkms build',但它没有将其传递给 'make'。将 BUILD_EXCLUSIVE_ARCH="arm" 添加到 /usr/src/rtl8812AU-4.3.14/dkms.conf 也没有区别。
须藤 dkms build -m ${DRV_NAME} -v ${DRV_VERSION} -k 4.4.21-v7+/arm
该内核不需要内核准备。跳过...
构建模块:
清理构建区域....
'make'....(错误退出状态:2)
错误!内核构建模块的错误返回状态:4.4.21-v7+ (arm)
有关详细信息,请参阅 /var/lib/dkms/rtl8812AU/4.3.14/build/make.log。cat /var/lib/dkms/rtl8812AU/4.3.14/build/make.log
DKMS make.log for rtl8812AU-4.3.14 for kernel 4.4.21-v7+ (arm)
Thu Sep 29 16:36:07 UTC 2016
make ARCH=armv7l CROSS_COMPILE= -C /lib/modules/4.4.21-v7+/build M=/var/lib/dkms/rtl8812AU/4.3.14/build modules
make[1]: Entering directory '/usr/src/linux'
Makefile:606: arch/armv7l/Makefile: No such file or directory
make[1] ]:没有规则可以制作目标'arch/armv7l/Makefile'。停止。
make[1]: 离开目录 '/usr/src/linux' …