小编Yur*_*ges的帖子

symfony doctrine动态地使用setter和getter

我正在使用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作为长期投资.

谢谢.

php oop doctrine symfony

4
推荐指数
1
解决办法
6064
查看次数

如何让 DKMS 通过正确的 ARCH 来“制作”?

我正在尝试使用 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' …

linux makefile compilation dkms

4
推荐指数
1
解决办法
4141
查看次数

标签 统计

compilation ×1

dkms ×1

doctrine ×1

linux ×1

makefile ×1

oop ×1

php ×1

symfony ×1