【发布时间】:2015-05-13 15:14:04
【问题描述】:
我已经为此苦苦挣扎了几个小时,并阅读了Doctrine documentation 和更多documentation,但我仍在苦苦挣扎。
我有两张桌子。我的“lookups”表是与“lookup_statuses”表(一个)有关系的所有者(很多)。特定查找可以处于多种不同的状态。
这是(我认为)单向的一对多关系。
在代码中,我搜索 lookup_statuses 表并返回一个与我需要的 slug 匹配的对象。我在我的查找实体上调用 setLookupStatus 并尝试保留它。我收到错误消息“通过关系找到了一个新实体”。
我使用学说逆向工程来开始我的领域模型,但我就是不知道如何正确实现这种关系。
我的 LookupStatuses 类(一)如下所示:
namespace App\Lib\Domain\Datalayer;
/**
* LookupStatuses
*
* @ORM\Table(name="lookup_statuses")
* @ORM\Entity
*/
class LookupStatuses
{
/**
* @OneToMany(targetEntity="App\Lib\Domain\Datalayer\Lookups", mappedBy="lookupStatus", cascade={"persist", "remove"})
*/
private $lookups;
}
我的查找表(很多)看起来像这样:
namespace App\Lib\Domain\Datalayer;
/**
* Lookups
*
* @ORM\Table(name="lookups", indexes={@ORM\Index(name="IDX_4CEC819D037A087", columns={"lookup_status_id"}), @ORM\Index(name="IDX_4CEC8194D39DE23", columns={"camera_event_id"})})
* @ORM\Entity
*/
class Lookups
{
/**
* @var \App\Lib\Domain\Datalayer\LookupStatuses
*
* @ORM\ManyToOne(targetEntity="App\Lib\Domain\Datalayer\LookupStatuses", inversedBy="lookups", cascade={"persist"})
* @ORM\JoinColumns({
* @ORM\JoinColumn(name="lookup_status_id", referencedColumnName="id")
* })
*/
private $lookupStatus;
}
这是我正在使用的堆栈版本:
"php": ">=5.4.0",
"laravel/framework": "5.0.*@dev",
"doctrine/orm": ">=2.4.0",
请有人帮我解开这个问题,以便我的用例能够正常工作。我想:
- 在 lookup_statuses 代码中查找状态
- 使用我得到的对象在我的查找实体上调用 setLookupStatus()
- 坚持查找以保存新的状态码
----更新:包括代码----
这是示例代码:
$lookupStatusesService = ServiceFactory::getInstance('LookupStatuses');
$status = $lookupStatusesService->findOne(['slug' => $slug], true);
$cameraEventService = ServiceFactory::getInstance('CameraEvents');
$cameraEvent = $cameraEventService->findOne(['uuid' => $uuid], true);
$unicodeLookupService = ServiceFactory::getInstance('UnicodeLookups');
$unicodeLookup = $unicodeLookupService->findOne(['cameraEvent' =>
$cameraEvent->getId()], true);
$unicodeLookup->setLookupStatus($status);
EntityManager::persist($unicodeLookup);
EntityManager::flush();
Findone() 构建 querybuilder where 子句并返回
$queryBuilder->getQuery()->getResult();
【问题讨论】:
-
能贴出你目前使用的代码吗?
标签: php doctrine-orm