小编Adr*_*ult的帖子

如何将一维标量数组作为doctrine dql查询结果?

我想从Auction表的id列中获取一组值.如果这是一个原始SQL我会写:

SELECT id FROM auction
Run Code Online (Sandbox Code Playgroud)

但是当我在Doctrine中执行此操作并执行:

$em->createQuery("SELECT a.id FROM Auction a")->getScalarResult(); 
Run Code Online (Sandbox Code Playgroud)

我得到一个像这样的数组:

array(
    array('id' => 1),
    array('id' => 2),
)
Run Code Online (Sandbox Code Playgroud)

相反,我想得到这样的数组:

array(
    1,
    2
)
Run Code Online (Sandbox Code Playgroud)

我怎么能用Doctrine做到这一点?

php doctrine-orm

104
推荐指数
6
解决办法
7万
查看次数

具有经过身份验证的用户的REST API的无状态

我正在设计一个REST Http api.(使用HATEOAS的东西,让客户"更简单",并避免客户做复杂的事情,而不是让api告诉他们该怎么做......)

由于应用程序的社交特性,为了与应用程序交互,用户需要进行身份验证,并且每个用户都会对数据略有不同的"视图".我们以twitter为例,对每个人来说都会更容易.

要对用户进行身份验证,我们将轻松使用OAuth.

因此,在客户端(ios app ...)中,随机用户可能会看到用户列表应该看到:

Adrien: Following
John:   Not Following
Rambo:  Not Following
Run Code Online (Sandbox Code Playgroud)

另一个用户可能会看到:

Adrien: Following
John:   Not Following
Rambo:  Following
Run Code Online (Sandbox Code Playgroud)

为实现这一目标,第一个解决方案将是客户端(在oauth术语中,iphone/web/etc应用程序),以获取经过身份验证的用户遵循的所有用户的列表,并且每次客户端显示列表时,比较每个具有被跟踪用户列表的用户,以确定其是否应显示"不跟随"或"关注".

请求/回复将是:

GET /users
Authorization: OAuth token...

[
  {"id": 1, "name": "Adrien"},
  {"id": 2, "name": "John"},
  {"id": 3, "name": "Rambo"}
]
Run Code Online (Sandbox Code Playgroud)

GET /users/{myid}/following
Authorization: OAuth token...

[1, 3, 25, 1210, 9]
Run Code Online (Sandbox Code Playgroud)

这似乎是相当无国籍的.好.

现在如果我想让客户端开发人员生活更轻松,并直接嵌入用户列表响应,每个用户与经过身份验证的用户之间的关系,该怎么办?

GET /users
Authorization: OAuth token...

[
  {"id": 1, "name": "Adrien", "relationship": "Following"},
  {"id": 2, "name": "John", "relationship": "Not Following"},
  {"id": 3, "name": …
Run Code Online (Sandbox Code Playgroud)

api rest http hateoas

23
推荐指数
2
解决办法
5469
查看次数

表单:避免将null设置为非提交的字段

我有一个简单的模型(源代码简化):

class Collection
{
    public $page;
    public $limit;
}
Run Code Online (Sandbox Code Playgroud)

和表单类型:

class CollectionType extends AbstractType
{
    public function buildForm(FormBuilderInterface $builder, array $options)
    {
        $builder->add('page', 'integer');
        $builder->add('limit', 'integer');
    }

    public function setDefaultOptions(OptionsResolverInterface $resolver)
    {
        $resolver->setDefaults(array(
            'data_class' => 'FSC\Common\Rest\Form\Model\Collection',
        ));
    }
}
Run Code Online (Sandbox Code Playgroud)

我的控制器:

public function getUsersAction(Request $request)
{
    $collection = new Collection();
    $collection->page = 1;
    $collection->limit = 10;

    $form = $this->createForm(new CollectionType(), $collection)
    $form->bind($request);

    print_r($collection);exit;
}
Run Code Online (Sandbox Code Playgroud)

当我POST /users/?form[page]=2&form[limit]=20,回应是我所期望的:

Collection Object
(
    [page:public] => 2
    [limit:public] => 20
)
Run Code Online (Sandbox Code Playgroud)

现在,当我POST /users/?form[page]=3 …

symfony-2.1

5
推荐指数
1
解决办法
3315
查看次数

在java中反序列化JSON的最快方法是什么

我想知道在 JAVA 中解析 json 的最快方法是什么?

  • 使用内置于 Array 和 Object 对象的库获取默认对象图
  • 使用您自己的 java bean 获取自定义对象图

谢谢

java json

5
推荐指数
2
解决办法
1万
查看次数

symfony2 registerNamespaces中'\'和'\\'有什么区别?

这两个代码段之间有什么区别.第一个用\ ,第二个用\\.

第一:

<?php
// File: app/autoload.php
$loader->registerNamespaces(array(
    'Knp\\Component'      => __DIR__.'/../vendor/knp-components/src',
    'Knp\\Bundle'         => __DIR__.'/../vendor/bundles',
    // ...
));
Run Code Online (Sandbox Code Playgroud)

第二个:

<?php
// File: app/autoload.php
$loader->registerNamespaces(array(
    'Knp\Component'      => __DIR__.'/../vendor/knp-components/src',
    'Knp\Bundle'         => __DIR__.'/../vendor/bundles',
    // ...
));
Run Code Online (Sandbox Code Playgroud)

它们是不同的还是它们的工作原理相同?

php symfony

3
推荐指数
1
解决办法
144
查看次数

Symfony2和Doctrine,Column不能与OneToOne关系为空

这是一个实体(EDITED:完整文件内容)

// Eve\MoonBundle\Entity\MoonMaterial.php

namespace Eve\MoonBundle\Entity;

use Doctrine\ORM\Mapping as ORM;

//use Doctrine\Common\Collections\ArrayCollection;

/**
 * @ORM\Table(name="_moon_material")
 * @ORM\Entity()
 */
class MoonMaterial
{

    public function __construct()
    {
        //$this->invTypes_byTypeID = new ArrayCollection();
    }

    // relations start

    /**
     * @ORM\OneToOne(targetEntity="Eve\DumpBundle\Entity\invTypes")
     * @ORM\JoinColumn(name="typeID", referencedColumnName="typeID")
     */
    private $invTypes_byTypeID;

    public function get_invTypes_byTypeID()
    {
        return $this->invTypes_byTypeID;
    }

    // relations end

    /**
     * @ORM\Column(name="userID", type="integer", nullable=false)
     * @ORM\Id
     * @ORM\GeneratedValue(strategy="NONE")
     */
    private $userID;

    /**
     * @ORM\Column(name="moonID", type="integer", nullable=false)
     * @ORM\Id
     * @ORM\GeneratedValue(strategy="NONE")
     */
    private $moonID;

    /**
     * @ORM\Column(name="typeID", …
Run Code Online (Sandbox Code Playgroud)

orm doctrine one-to-one symfony

3
推荐指数
1
解决办法
9438
查看次数

@param注释在symfony2类文件中的作用是什么

在symfony2和doctrine 2.我有这个

 /**
  * Find a user by its username.
  *
  * @param string  $username
  * @return UserInterface or null if user does not exist
  */
function findUserByUsername($username);
Run Code Online (Sandbox Code Playgroud)

现在我想知道它是否解决了目的,或者它是否在数据库中使用这些@param@return注释做任何事情,或者它们仅用于文档

symfony doctrine-orm

2
推荐指数
1
解决办法
2298
查看次数

如何设置外键id的id #sf2 #doctrine2

我正在尝试为对象手动设置外键 ID,但没有找到方法

class Item
{
    /**
     * @ORM\ManyToOne(targetEntity="MyBundle\Entity\ItemType", inversedBy="itemTypes")
     * @ORM\JoinColumn(name="type_id", referencedColumnName="id")
     */
    protected $item_type;
}
Run Code Online (Sandbox Code Playgroud)

有没有办法做一些链接?

$item = new Item();
$item->setItemTypeId(1); // This generate an error.
Run Code Online (Sandbox Code Playgroud)

还是我必须这样做?

$item = new Item();
$type = Repository::RetrieveById(1);
$item->setItemType($type); // This generate an error.
Run Code Online (Sandbox Code Playgroud)

php foreign-keys symfony doctrine-orm

2
推荐指数
1
解决办法
1737
查看次数

Symfony 和 Percona

Symfony 2 支持 Percona 吗?或者我应该坚持使用MySQL?我正在运行 Debian 6 (squeeze) 并安装了 MySQL,但在安装 Symfony 之前我在想也许 Percona 会更好(更快)?

谢谢。

php mysql symfony doctrine-orm percona

2
推荐指数
1
解决办法
1116
查看次数

Symfony/Doctrine:"可捕获的致命错误:当持久化时,类<type>的对象无法转换为字符串"

symfony2应用程序具有一个Job具有类型属性的实体WebSite.

没有其他属性或方法的简化表示:

/**
 * @ORM\Entity
 * @ORM\Table(name="Job")
 */
class Job
{
    /**
     * @ORM\Id
     * @ORM\Column(type="integer")
     * @ORM\GeneratedValue(strategy="AUTO")
     */
    protected $id;


    /**
     * @ORM\Column(type="integer", name="website_id", nullable=false)
     * @ORM\ManyToOne(targetEntity="Example\ExampleBundle\Entity\WebSite")
     */
    protected $website;
}
Run Code Online (Sandbox Code Playgroud)

Symfony/Doctrine试图website在持久化时将属性转换为字符串,从而导致错误:

可捕获的致命错误:类的对象示例\ ExampleBundle\Entity\WebSite无法转换为/vendor/doctrine/dbal/lib/Doctrine/DBAL/Statement.php第131行中的字符串

我相信上面的@ORM\Column注释表示website属性是一个整数.我不明白为什么Symfony/Doctrine希望尝试将website属性转换为字符串.

我试图解决此问题的非理想解决方法:

  • 添加__toString()方法WebSite,返回id属性的字符串表示,导致正确的值最终在Job.website_id数据域中结束; 这种解决方法是不切实际的,因为我将来需要__toString()在应用程序的其他地方提供字符串.

  • @ORM\Columnwebsite属性中删除注释; 这导致所有未来差异生成的迁移(php app/console doctrine:migrations:diff)删除相关数据库字段的"not null"方面.

我是否应对上述注释做出任何更改,以通知Symfony/Doctrine 在持久化时调用获取所需内容的getId()方法WebSite?我可以做出任何改变WebSite来实现同样的目标吗?

需要进行哪些更改才能确保上述注释可以保留在原位,以便Doctrine最终调用WebSite.getId()以获取持久存在时所需的内容,而不是尝试将对象强制转换为字符串?

annotations doctrine-orm symfony-2.1

0
推荐指数
1
解决办法
7512
查看次数

initWithFrame没有在UIVIew中执行

我已经创建了一个UIView子类并想要执行一个方法initWithFrame:,但是这个方法没有被调用.

当我调用initWithCoder:正在执行的方法时,代码崩溃显示此错误:

由于未捕获的异常'NSGenericException'而终止应用程序,原因是:'此编码器要求从初始化编码器方法返回替换的对象:'

我的代码是:

-(void)initialize
{
    //code
}

-(id)initWithFrame:(CGRect)frame
{
    self = [super initWithFrame:frame];
    if (self) {
        [self initialize];

        // Initialization code
    }
    return self;
}

- (id)initWithCoder:(NSCoder *)aCoder
{ 
    self = [super initWithCoder:aCoder];

    if(self)
    {
        [self initialize];
    }
    return self;
}
Run Code Online (Sandbox Code Playgroud)

objective-c ios

0
推荐指数
2
解决办法
2840
查看次数