教义 2 参考表
Posted
技术标签:
【中文标题】教义 2 参考表【英文标题】:Doctrine 2 reference table 【发布时间】:2018-10-29 09:54:59 【问题描述】:我有以下问题。 我有两张桌子
product
id|name|stock_status_id
stock_status
stock_status_id|language_id|name
我需要通过 stock_status_id 获取 Product 中的对象 StockStatus。 我用这个代码
<?php
namespace OC\Model\Catalog\Product;
use Doctrine\ORM\Mapping as ORM;
use Doctrine\Common\Collections\ArrayCollection;
/**
* Class Product
*
* @ORM\Entity
* @ORM\Table(name="oc_product")
*/
class Product
/**
* @var int
* @ORM\Id
* @ORM\GeneratedValue(strategy="AUTO")
* @ORM\Column(type="integer", nullable=false)
*/
protected $product_id;
/**
* @var ArrayCollection
* @ORM\OneToOne(targetEntity="StockStatus", mappedBy="stock_status_id")
* @ORM\JoinColumn(name="stock_status_id", referencedColumnName="stock_status_id")
*/
protected $stock_status;
我需要一个单向关系,但条目应该返回所需的语言。如何替换该语言的另一个动态值?
【问题讨论】:
【参考方案1】:这样的事情是你可以做的。
1- 首先像这样更新您的 Product 实体类:
namespace OC\Model\Catalog\Product;
use Doctrine\ORM\Mapping as ORM;
use Doctrine\Common\Collections\ArrayCollection;
/**
* Class Product
*
* @ORM\Entity
* @ORM\Table(name="oc_product")
*/
class Product
/**
* @var int
* @ORM\Id
* @ORM\GeneratedValue(strategy="AUTO")
* @ORM\Column(type="integer", nullable=false)
*/
protected $product_id;
/**
* @ORM\OneToOne(targetEntity="StockStatus")
* @ORM\JoinColumn(name="stock_status_id", referencedColumnName="stock_status_id")
*/
protected $stock_status;
只需删除 Array Collection 变量,因为这是一对一的关系,不会有数组,只有 StockStatus 实体类的对象。
2- 查询以从特定语言的产品中检索 StockStatus 对象
public function GetStockStatusByLanguageId($languageId)
$queryBuilder = $this->entityManager->createQueryBuilder();
$queryBuilder->select('stock_status')
->from('OC\Model\Catalog\Product', 'product')
->join('product.stock_status', 'stock_status')
->where($queryBuilder->expr()->eq('stock_status.language_id', $languageId));
$result = $queryBuilder->getQuery()->getResult();
return $result;
假设您有一个 Product 实体类的存储库,这是一个示例函数。如果这是您需要的,请告诉我。
【讨论】:
以上是关于教义 2 参考表的主要内容,如果未能解决你的问题,请参考以下文章