Php Symfony,无法从表中检索记录
在Symfony中,我无法使用find()从表中检索记录,但我可以使用createQuery()?在我的项目中,这是随机发生在我的表上的。使用symfony find()、findBy()等,数据似乎变得不可访问,但我可以使用dql 为什么会这样?有人有过这样的经历吗?我想不出来。谢谢你的帮助Php Symfony,无法从表中检索记录,php,symfony,Php,Symfony,在Symfony中,我无法使用find()从表中检索记录,但我可以使用createQuery()?在我的项目中,这是随机发生在我的表上的。使用symfony find()、findBy()等,数据似乎变得不可访问,但我可以使用dql 为什么会这样?有人有过这样的经历吗?我想不出来。谢谢你的帮助 我运行的测试:我使用完全相同的实体字段创建了一个类似的表,并将数据导入到表中,它工作得非常好。为什么此表刚刚停止响应Symfony的请求 这很有效 $dql = "SELECT co FROM W
我运行的测试:我使用完全相同的实体字段创建了一个类似的表,并将数据导入到表中,它工作得非常好。为什么此表刚刚停止响应Symfony的请求 这很有效
$dql = "SELECT co FROM WIC\CommonBundle\Entity\CustomOptions co WHERE co.account=:account_id AND co.option_field=:value";
$query = $em->createQuery($dql);
$query->setParameters(array(
'value' => 'reorder_reason',
));
$customOptionValue = $query->getResult();
echo count($customOptionValue); // equals 3
这不起作用-传入完全相同的变量
$customOptionValue = $em->getRepository('WICCommonBundle:CustomOptions')->findBy(
array(
"option_field"=>"reorder_reason",
)
);
echo count($customOptionValue); // equals 0
这是我的CustomOptions实体:
namespace WIC\CommonBundle\Entity;
use Doctrine\ORM\Mapping as ORM;
use Doctrine\Common\Collections\ArrayCollection;
use Gedmo\Mapping\Annotation as Gedmo;
use Symfony\Component\Validator\Constraints as Assert;
/**
* CustomOptions
*
* @ORM\Table(uniqueConstraints={@ORM\UniqueConstraint(name="accountFieldValueOptions", columns={"account_id", "option_value", "option_field"})})
* @ORM\Entity(repositoryClass="WIC\CommonBundle\Entity\CommonRepository")
* @Gedmo\Loggable
* @Gedmo\SoftDeleteable(fieldName="deletedAt")
* @ORM\HasLifecycleCallbacks
*/
class CustomOptions
{
/**
* @var integer $id
*
* @ORM\Column(name="id", type="integer")
* @ORM\Id
* @ORM\GeneratedValue(strategy="AUTO")
*/
private $id;
/**
* @var string $name
*
* @Gedmo\Versioned
* @ORM\Column(name="name", type="string", length=255, unique=false, nullable=true)
*/
private $name;
/**
* @var string $option_value
*
* @Gedmo\Versioned
* @ORM\Column(name="option_value", type="string", length=255)
* @Assert\NotBlank(message="Option Value Should Not Be Blank")
*/
private $option_value;
/**
* @var string $option_field
*
* @Gedmo\Versioned
* @ORM\Column(name="option_field", type="string", length=255, unique=false, nullable=true)
*/
private $option_field;
/**
* @ORM\ManyToOne(targetEntity="WIC\AccountBundle\Entity\Account", fetch="EAGER")
* @ORM\JoinColumn(name="account_id", referencedColumnName="id", nullable=false)
* @Gedmo\Versioned
*/
protected $account;
/**
* @var datetime $created
*
* @Gedmo\Timestampable(on="create")
* @ORM\Column(type="datetime", nullable=true)
*/
private $created;
/**
* @var datetime $updated
*
* @Gedmo\Timestampable(on="update")
* @ORM\Column(type="datetime", nullable=true)
*/
private $updated;
/**
* @ORM\Column(name="deletedAt", type="datetime", nullable=true)
*/
private $deletedAt;
public function __construct()
{
}
/**
* Get id
*
* @return integer
*/
public function getId()
{
return $this->id;
}
/**
* Set account
*
* @param \WIC\AccountBundle\Entity\Account $account
* @return InventoryLocation
*/
public function setAccount(\WIC\AccountBundle\Entity\Account $account = null)
{
$this->account = $account;
return $this;
}
/**
* Get account
*
* @return \WIC\AccountBundle\Entity\Account
*/
public function getAccount()
{
return $this->account;
}
/**
* Set created
*
* @param \DateTime $created
* @return CustomOptions
*/
public function setCreated($created)
{
$this->created = $created;
return $this;
}
/**
* Get created
*
* @return \DateTime
*/
public function getCreated()
{
return $this->created;
}
/**
* Set updated
*
* @param \DateTime $updated
* @return CustomOptions
*/
public function setUpdated($updated)
{
$this->updated = $updated;
return $this;
}
/**
* Get updated
*
* @return \DateTime
*/
public function getUpdated()
{
return $this->updated;
}
/**
* Set deletedAt
*
* @param \DateTime $deletedAt
* @return CustomOptions
*/
public function setDeletedAt($deletedAt)
{
$this->deletedAt = $deletedAt;
return $this;
}
/**
* Get deletedAt
*
* @return \DateTime
*/
public function getDeletedAt()
{
return $this->deletedAt;
}
/**
* Get option_value
*
* @return string
*/
public function getOptionValue()
{
return $this->option_value;
}
/**
* Set option_value
*
* @param string $option_value
* @return CustomOptions
*/
public function setOptionValue($option_value)
{
$this->option_value = $option_value;
}
/**
* Get option_field
*
* @return string
*/
public function getOptionField()
{
return $this->option_field;
}
/**
* Set option_field
*
* @param string $option_field
* @return CustomOptions
*/
public function setOptionField($option_field)
{
$this->option_field = $option_field;
}
/**
* Get name
*
* @return string
*/
public function getName()
{
return $this->name;
}
/**
* Set name
*
* @param string $name
* @return CustomOptions
*/
public function setName($name)
{
$this->name = $name;
}
尝试使用ID而不是整个对象 即 编辑:是您未能遵守symfony期望的编码标准导致了您出现以下问题:
对变量、函数和方法名称使用camelCase,而不是下划线
private$option_字段
应变为private$optionField
,您应调整所创建的任何函数以反映这一点。然后您的findBy数组将使用“optionField”=>“reorder\u reason”
我正在参加一个会议,并在不到20秒的时间内查看了这个问题,但可能“account”=>$account->getId()
?我删除了帐户id,这对问题没有影响。没有人要求您删除任何内容。他指出,您是通过对象而不是ID来查找它。在findBy方法中,数组中的键仅用于原则中的映射,即帐户映射到帐户ID,因此它执行的是where account\u ID=您的\u PHP\u对象,这没有意义。我不在乎是否有人要求我不删除任何内容,该变量与原因或解决方案无关,显然对该问题产生了两个不准确的回答。干杯。好吧,这件事的美妙之处在于,现在你已经学会了两件你完全做错了的事情,而不是一件:干杯,先生。我删除了帐户id,这对问题没有影响。我不在乎是否有人要求我不删除任何东西,该变量与原因或解决方案无关,显然对该问题产生了两个不准确的回答。干杯我“按字面意思”复制并粘贴了您的代码,但根本没有解决问题。编辑了答案,因为错误是由于您没有将变量映射到symfony2所期望的命名约定内。它不起作用。这是一个比你提出的问题更深的问题。我尝试了你的建议,但没有解决方案。我使用完全相同的实体字段创建了一个类似的表,并将数据导入到表中,效果非常好。为什么此表刚刚停止响应Symfony的请求???让我们走的东西嗯???
$customOptionValue = $em->getRepository('WICCommonBundle:CustomOptions')->findBy(array(
"account"=>$account->getId(),
"option_field"=>"reorder_reason",
));