如何在连接时访问第二个表的对象(非相关表)?
我有两个不相关的表,我想得到第二个类的对象(来自下面的转储输出)
例如:
我的控制员:
$ProductSet_Repo = $em->getRepository('MyTestBundle:Product\ProductSet')->FindProductSet($productid);
通常当表格相关时,我可以很简单地进行操作
$productSet = $ProductSet_Repo->getproductid()->getProduct();
从Product class
获取ProductSet Class
的对象。
但是由于这些表没有关系,当我转储数据时,我得到了两个类的对象,有没有办法可以访问对象My\TestBundle:Products\Entity\Product\ProductSet
和\My\TestBundle\Entity\Product\Product
?
注意:我不想在两个表之间建立关系,因为我正在处理已经存在的表,我不想对其进行任何更改
我也知道我可以选择要检索的字段。 (我不想这样做)
答案 0 :(得分:0)
你写道:
我不想在两个表之间建立关系,因为我正在处理已经存在的表,我不想对其进行任何更改。
但是使用学说,你可以在不改变表格的情况下在两个实体之间建立关联。据我所知,您的product_id
表格中有一个product_set
列。这就是在Product
和ProductSet
之间建立关联所需的全部内容。
在ProductSet
课程中,你可以这样做:
<?php
namespace My\TestBundle\Entity\Product;
class ProductSet
{
//... other properties
/**
* @var Product
* @ORM\Id
* @ORM\ManyToOne(targetEntity="My\TestBundle\Entity\Product\Product")
* @ORM\JoinColumn(name="product_id", referencedColumnName="id")
*/
protected $product;
/**
* Set the product.
*
* @param Product $product
* @return ProductSet
*/
public function setProduct(Product $product)
{
$this->product = $product;
return $this;
}
/**
* Get the product.
*
* @return Product
*/
public function getProduct()
{
return $this->product;
}
//... other setters and getters
}
现在你可以做到:
$repository = $em->getRepository('MyTestBundle:Product\ProductSet')
$productSets = $repository->findBy(array('product' => $productid));
foreach($productSets as $productSet){
$productSet->getProduct()->getId() === $productId; // true
}
答案 1 :(得分:0)
你仍然可以使用查询构建器或本机sql加入它们(尽管在另一个实体中你有相应对象id的奇怪的命名约定),但这是一个非常糟糕的方法。
它是由以前的webdeveloper开发的,我不想花更多的时间,因为我作为自由的lancer工作
这不是借口。您应该为这些数据创建关系和迁移。为设计不佳和开发的应用程序赚钱并不酷。
使用这种糟糕的设计可能需要额外的工作,而不是以适当的方式进行。