在我的Repository类中,我使用以下代码进行查询:
$query = $this->getEntityManager()->createQuery("
SELECT s.term, COUNT(s.term) AS freq
FROM App\Entities\SearchTerm s
GROUP BY s.term
ORDER BY s.term ASC
");
$result = $query->getResult();
Run Code Online (Sandbox Code Playgroud)
我得到的结果是:
array (size=4)
0 =>
array (size=2)
'term' => string '' (length=0)
'freq' => string '1' (length=1)
1 =>
array (size=2)
'term' => string 'foo' (length=3)
'freq' => string '1' (length=1)
2 =>
array (size=2)
'term' => string 'bar' (length=3)
'freq' => string '2' (length=1)
3 =>
array (size=2)
'term' => string 'baz' (length=3)
'freq' => string …Run Code Online (Sandbox Code Playgroud) 在我的Symfony2应用程序中,我将大部分实体提取到一个单独的库中,我使用composer进行安装.
这个库没有依赖于Symfony2(但是依赖于Doctrine,因为我使用了注释),因为我想在其他非Symfony2项目中使用它.
该库包含一个ClientUser映射到client_users表的实体.在我的Symfony2应用程序中,我想使用相同的ClientUser实体进行身份验证.这需要我实施Symfony\Component\Security\Core\User\UserInterface.
问题是我希望同时具有"Symfony2-agnostic" 和 "Symfony-aware" ClientUser实体(两者都应该映射到同一个表).我试图从ClientUserAbstract实体扩展这两个类,但它没有用.
<?php
namespace My\Library\Entity;
use Doctrine\ORM\Mapping as ORM;
/**
* @ORM\MappedSuperClass
*/
class ClientUserAbstract {
// all my fields here
}
Run Code Online (Sandbox Code Playgroud)
我的"Symfony2-agnostic"实体:
<?php
namespace My\Library\Entity;
use Doctrine\ORM\Mapping as ORM;
/**
* @ORM\Entity
*/
class ClientUser extends ClientUserAbstract {
// nothing here, it's empty
}
Run Code Online (Sandbox Code Playgroud)
我的"Symfony2-aware"实体:
<?php
namespace Vendor\Bundle\MyBundle\Entity;
use Doctrine\ORM\Mapping as ORM;
use Symfony\Component\Security\Core\User\UserInterface;
/**
* @ORM\Entity
*/
class ClientUser extends ClientUserAbstract implements UserInterface { …Run Code Online (Sandbox Code Playgroud) 我知道我可以从实体经理那里获得参考资料.但是,我不希望我的服务依赖于实体管理器.相反,我想注入一个Repository类,然后以某种方式从该Repository类中获取一个Reference.这可能吗?
我不想要这个:
<?php
use Doctrine\ORM\EntityManager;
class MyService {
protected $em;
public function __construct(EntityManager $em){
$this->em = $em;
}
public function doSomething($someId)
{
$reference = $this->em->getReference('My\Entity', $someId);
}
}
Run Code Online (Sandbox Code Playgroud)
我想要这样的东西:
<?php
use Doctrine\ORM\EntityRepository;
class MyService {
protected $repo;
public function __construct(EntityRepository $repo){
$this->repo = $repo;
}
public function doSomething($someId)
{
// how to retrieve a reference???
$reference = ???
}
}
Run Code Online (Sandbox Code Playgroud) 我想按顺序排列这个数组元素并编写下面的代码:
<?php
$a=array("z","s","a","j","t","b");
for($i=0;$i<=6;$i++)
{
if ($i[0]<$i[1]) { echo $i[1]; }
else if ($i[1]<$i[2]) { echo $i[2]; }
else if ($i[2]<$i[3]) { echo $i[3]; }
else if ($i[3]<$i[4]) { echo $i[4]; }
else if ($i[4]<$i[5]) { echo $i[5]; }
else if ($i[5]<$i[6]) { echo $i[6]; }
else if ($i[6]<$i[7]) { echo $i[7]; }
else if ($i[7]<$i[8]) { echo $i[8]; }
else if ($i[8]<$i[9]) { echo $i[9]; }
else if ($i[9]<$i[10]) { echo $i[10]; }
else if ($i[10]<$i[11]) { echo $i[11]; …Run Code Online (Sandbox Code Playgroud) 我正在尝试用一段PHP代码来替换字符串中char的多个相邻出现,只有一个char出现.
例:
my-string--is---dashed
Run Code Online (Sandbox Code Playgroud)
应成为:
my-string-is-dashed
Run Code Online (Sandbox Code Playgroud) 我正在调用代码
strtr($somevars['thisvar'], "abc")
Run Code Online (Sandbox Code Playgroud)
哪里$somevars['thisvar']包含一个字符串.
它给了我
Warning: strtr() [function.strtr]: The second argument is not an array
Run Code Online (Sandbox Code Playgroud)
为什么?
php ×6
doctrine-orm ×3
string ×2
doctrine ×1
dql ×1
if-statement ×1
magento ×1
strtr ×1
symfony ×1
syntax ×1