Symfony 2 遇到一些问题。
尝试使用我的实体从表中获取一些行。
这是实体
namespace AppBundle\Entity;
use Doctrine\ORM\Mapping as ORM;
/**
* @ORM\Entity
* @ORM\Table(name="articles")
*/
class Article
{
/**
* @var integer $id
*
* @ORM\Id
* @ORM\Column(name="id", type="integer")
* @ORM\GeneratedValue(strategy="AUTO")
*/
protected $id;
/**
* @ORM\Column(type="string" name="title")
*/
protected $title;
/**
* @ORM\Column(type="int" name="author_id")
*/
protected $authorId;
/**
* @ORM\Column(type="datetime" name="creation_date")
*/
protected $creationDate;
/**
* @ORM\Column(name="string")
*/
protected $content;
public function getId()
{
return $this->id;
}
public function getTitle()
{
return $this->title;
}
public function getAuthorId() …
Run Code Online (Sandbox Code Playgroud) 你能给我建议一个解决方案,如何从 Symfony 3 中的服务访问 Doctrine?我将 Doctrine 对象从 Controller 发送到构造函数中创建的 Service 对象,但我不确定它是否是最佳选择。
你能给我推荐一个更好的解决方案吗?
public function editGroupAction($groupId) {
$doctrine = $this->getDoctrine();
$roleHelper = new RoleHelper($doctrine);
}
Run Code Online (Sandbox Code Playgroud) 简短的问题:我可以避免为父类的继承类生成外键吗?是否可以在关系所有者而不是父类中设置用于继承映射的鉴别器列?
解释:
我正在设计一个发票模型,其中发票主题可以是以下三种类型之一:
阅读完Doctrine 继承映射后,我认为类表继承是最适合我的需求的。
Invoice
如果我可以从到建立关系,映射的超类InvoiceSubject
可以更好地满足我的需求,但我认为我不能:
映射超类不能是实体,它不可查询,并且映射超类定义的持久关系必须是单向的(仅具有拥有方)。这意味着在映射的超类上根本不可能存在一对多关联。此外,只有当映射的超类当前仅在一个实体中使用时,多对多关联才有可能。
此外,使用接口可能是一种解决方案,但关系中的接口只能映射到一个实体。
所以,这是我的模型:
/**
* @ORM\Entity
*/
class Invoice
{
/**
* @ORM\ManyToOne(targetEntity="InvoiceSubject")
* @var InvoiceSubject
*/
protected $subject;
}
/**
* @ORM\Entity
* @ORM\InheritanceType("JOINED")
* @ORM\DiscriminatorColumn(name="invoicesubject_type", type="string")
* @ORM\DiscriminatorMap({"invoice-subject" = "InvoiceSubject", "contract" = "Contract", "provider" = "Provider", "client" = "Client"})
*/
class InvoiceSubject
{
/**
* @ORM\Id
* @ORM\Column(type="integer")
*/
protected $id;
}
/**
* @ORM\Entity
*/
class …
Run Code Online (Sandbox Code Playgroud) 我对 Laravel 和学说完全陌生,一开始我选择 Laravel 6 并阅读了一些教程。正如我所见,将 Doctrine 与 Laravel 一起使用会更好,然后我尝试将 Doctrine 安装到我的项目中,但不幸的是,它失败了。
是不是因为 Laravel 6 是新的并且还不支持 Doctrine?或者我做错了什么?
我在作曲家上试过这个命令
composer require "laravel-doctrine/orm:1.3.*"
Run Code Online (Sandbox Code Playgroud)
它给了我一些错误,例如
然后,我尝试遵循 6.x 版的 Laravel 文档,并在数据库部分发现它提到在修改列之前安装学说/dbal
在修改一个列之前,一定要添加到你的 composer.json 文件中的 dotric/dbal 依赖。Doctrine DBAL 库用于确定列的当前状态并创建对列进行指定调整所需的 SQL 查询:
作曲家需要学说/dbal
但是,这个命令也会导致我出现同样的错误。
请指导我走正确的道路。谢谢你。
我定义了两个查询构建器。
第一:返回用户的所有帐户。
秒数:按帐户返回所有用户交易。
第一的:
public function getAccountsList($user)
{
return $this->getAccountRepository()
->createQueryBuilder('a')
->select('a')
->where('a.user = :user')
->setParameter('user', $user)
->getQuery()
->getResult();
}
Run Code Online (Sandbox Code Playgroud)
第二:
public function getTransactionsList($user)
{
$accounts = $this->getAccountsList($user);
$query = $this->getTransactionRepository()
->createQueryBuilder('t')
->select('t')
->where('t.account IN (:accounts)')
->setParameter('account', $accounts)
->getQuery()
->getResult();
return $query;
}
Run Code Online (Sandbox Code Playgroud)
第一个工作完美,但第二个抛出错误:
无效参数:查询中未定义令牌帐户
如何修复它?
doctrine-orm ×5
symfony ×4
php ×3
doctrine ×1
laravel ×1
laravel-6 ×1
service ×1
symfony-3.4 ×1