小编Den*_*nis的帖子

Doctrine 2 ArrayCollection过滤方法

我可以在使用延迟加载时从Doctrine 2中的arrayCollection中过滤出结果吗?例如,

// users = ArrayCollection with User entities containing an "active" property
$customer->users->filter('active' => TRUE)->first()
Run Code Online (Sandbox Code Playgroud)

我不清楚滤波器方法是如何实际使用的.

orm lazy-loading arraycollection doctrine-orm

58
推荐指数
3
解决办法
10万
查看次数

从实体更新的Doctrine 2

是否可以通过以下类似的方式更新实体:

$data       = new ATest();  // my entity
$data->id   = 1;            // id 1 already exists, I just want to update this row
$data->name = "ORM Tested"; // changed the name

$entityManager->persist($data);
$entityManager->flush();
Run Code Online (Sandbox Code Playgroud)

这将插入并更改对象的id,而不是更新数据库中的现有行.

php orm doctrine-orm

43
推荐指数
4
解决办法
7万
查看次数

selectionStart-End with textareas

我有这个烦人的问题,我似乎无法在textarea中获取所选文本的起始和结束索引,我得到的所有内容都是这样的:

$('#myarea').selectionStart; // return undefined
Run Code Online (Sandbox Code Playgroud)

我做错什么了吗?

javascript jquery editor

32
推荐指数
2
解决办法
3万
查看次数

克隆github项目的一部分

可能重复:
有没有办法克隆git存储库的子目录?

我正在尝试克隆github项目的一部分,但我只能获得根文件夹.这是我第一次尝试使用github并且我刚刚安装了tortoisegit,我习惯了svn和cvs,你可以只拿一个你想要签出的文件夹,但似乎git只在根文件夹中有一个.git文件所以即时通讯不知道该怎么办.

git github tortoisegit

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

Google Chrome不会反复重新验证etag

即使我发送"缓存控制:必须重新验证",Google Chrome在浏览器中使用来回按钮时也会使用本地缓存页面.

这是原始回复的一部分:

HTTP/1.1 200 OK
cache-control: private, must-revalidate
etag: "c9239b5d4b98949f8469a05062e05bb999d7512e"
Keep-Alive: timeout=5, max=100
Connection: Keep-Alive
Content-Type: text/html; charset=utf-8
Run Code Online (Sandbox Code Playgroud)

如果我刷新页面,我得到一个"HTTP/1.1 304 Not Modified"响应但是当我使用后退按钮时,我得到以下响应:

Request URL:example.com
Request Method:GET
Status Code:200 OK (from cache)
Run Code Online (Sandbox Code Playgroud)

我正在寻找的响应是304或200 OK,是否有可能实现这一目标?

etag http cache-control browser-cache

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

用于评论和评论回复的mysql结构

我一直在考虑这个问题很长一段时间,我需要一种方法来添加对数据库中的注释的回复,但我不知道如何继续.

这是我目前的评论表(并没有多说但是它的开头):

CREATE TABLE IF NOT EXISTS `comments` (
  `id` int(12) NOT NULL AUTO_INCREMENT,
  `comment` text,
  `user_id` int(12) DEFAULT NULL,
  `topic_id` int(12) NOT NULL,
  `ts` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP,
  PRIMARY KEY (`id`),
  KEY `user_id` (`user_id`),
  KEY `topic_id` (`topic_id`)
) ENGINE=InnoDB  DEFAULT CHARSET=utf8 AUTO_INCREMENT=27 ;
Run Code Online (Sandbox Code Playgroud)

这是我当前的查询:

SELECT c.id, c.comment, c.user_id, u.username, u.photo
FROM (comments c)
JOIN users u ON c.user_id = u.id
WHERE c.topic_id = 9
Run Code Online (Sandbox Code Playgroud)

一种选择是创建一个名为"comment_replies"的新表,但我不确定如果我能够在一个查询中选择所有注释和注释回复,并且如果我添加一个名为"回复"的新列我就是不确定如何对它们进行排序以获得每个回复的每条评论.

我想知道如何处理这个问题.

编辑:

下面的答案是关于在1条评论和2条回复中添加parent_comment_id结果的这种数组:

array(2) {
  [0]=>
  object(stdClass)#17 (7) {
    ["id"]=>
    string(2) "26"
    ["comment"]=> …
Run Code Online (Sandbox Code Playgroud)

mysql join

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

Doctrine 2多个主键

由于某种原因,doctrine试图插入一个名为primary的索引而不是在我的MYSQL数据库上实际添加主键,这就是Doctrine生成的:

CREATE UNIQUE INDEX primary ON my_table (columnOne, columnTwo);
Run Code Online (Sandbox Code Playgroud)

这是我的SQL编辑器生成的,这是唯一有效的方法:

ALTER TABLE my_table ADD PRIMARY KEY  (columnOne,columnTwo);
Run Code Online (Sandbox Code Playgroud)

这是我的班级:

....
class MyTable
{
    /**
     * @var integer $columnOne
     *
     * @Column(name="columnOne", type="integer", nullable=false)
     * @Id
     * @GeneratedValue(strategy="NONE")
     */
    private $columnOne;

    /**
     * @var integer $columnTwo
     *
     * @Column(name="columnTwo", type="integer", nullable=false)
     * @Id
     * @GeneratedValue(strategy="NONE")
     */
    private $columnTwo;
}
Run Code Online (Sandbox Code Playgroud)

php mysql orm doctrine-orm

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

mysql - 子查询和连接

我不太确定这是否是正确的方法,这是我的情况:

目前,我想要选择15个画廊,然后离开通过ID与用户表连接,但我也想从不过从每个画廊一个随机的图片我知道你不能限制左连接(图片)到只拍摄一张随机图片而不做子查询.

这是我到目前为止所得到的,但它不能正常工作:

SELECT galleries.id, galleries.name, users.username, pictures.url 
FROM galleries 
LEFT JOIN users ON users.id = galleries.user_id 
LEFT JOIN pictures ON (
    SELECT pictures.url 
    FROM pictures 
    WHERE pictures.gallery_id = galleries.id 
    ORDER BY RAND() 
    LIMIT 1) 
WHERE active = 1 
ORDER BY RAND() 
LIMIT 15
Run Code Online (Sandbox Code Playgroud)

我也尝试使用Active Record执行此操作但是在执行两次左连接后我遇到了问题,是否可以在此处获取子查询:

$this->db->select('galleries.id, galleries.name, users.id as user_id, users.username');
$this->db->from('galleries');
$this->db->join('users', 'users.id = galleries.user_id','left');
$this->db->join('pictures','pictures.gallery_id = galleries.id AND','left');
$this->db->where('active',1);
Run Code Online (Sandbox Code Playgroud)

我希望它不要乱,但我真的开始让所有的SQL查询混淆..

编辑: 使用CodeIgniter进行活动记录

php mysql sql join subquery

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

Doctrine 2延迟加载失败

我有两个实体,用户和客户端,一个客户端可以有很多用户.

通常我想拥有一个用户实体并延迟加载客户端但由于某种原因,当我尝试访问其属性时,客户端代理不会加载自身.

如果我像这样转储数据\Doctrine\Common\Utils\Debug::log($user->client);,它将输出客户端代理及其客户端ID.

如果我将获取策略更改为"EAGER",我将使客户端实体保持原样,但是当我访问用户时,我并不总是需要客户端实体,因此我更倾向于使用LAZY加载.

编辑

当我稍后这样做:

$user->client->name
Run Code Online (Sandbox Code Playgroud)

即使我的代理获得了客户端ID,我也会返回null.

这是我的两个关系(在注释中):

// user annotation

/**
 * @var Entities\Client
 *
 * @ManyToOne(targetEntity="Client", inversedBy="users", fetch="LAZY")
 */
private $client;

// client annotation

/**
 * @var Entities\User
 *
 * @OneToMany(targetEntity="User", mappedBy="client", cascade={"all"}, fetch="LAZY")
 */
private $users;
Run Code Online (Sandbox Code Playgroud)

编辑

我发现为什么它不起作用,我的所有注释都扩展了一个基本注释,然后基本注释有一个getter和一个在代理类中使用时失败的setter.

php orm lazy-loading doctrine-orm

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

Doctrine 2复合键和DQL连接

我正在尝试过滤出父组成复合主键的子项,父项称为主语,子项是课程:

学科:

class Subject
{
   /**
     * @var integer
     *
     * @Column(type="integer")
     * @Id
     * @GeneratedValue(strategy="NONE")
     */
    protected $id;

    /**
     * @var integer
     *
     * @Column(type="integer")
     * @Id
     */
    protected $customer_id;

    /**
     * @var ArrayCollection
     *
     * @OneToMany(targetEntity="Course", mappedBy="subject")
     */
    private $courses;

    ...
}
Run Code Online (Sandbox Code Playgroud)

课程:

class Course
{
    ...

    /**
     * @var Subject
     *
     * @ManyToOne(targetEntity="Subject", inversedBy="courses")
     * @JoinColumns({
     *   @JoinColumn(name="subject_id", referencedColumnName="id"),
     *   @JoinColumn(name="subject_customer_id", referencedColumnName="customer_id")
     * })
     */
    private $subject;
}
Run Code Online (Sandbox Code Playgroud)

我有"subject_id"和"subject_customer_id",我的问题是,当我写这篇文章时,我无法过滤掉没有加入主题的课程:

$this->em->createQuery("SELECT c FROM Course c WHERE c.subject = …
Run Code Online (Sandbox Code Playgroud)

php join composite-key dql doctrine-orm

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

css和图像精灵

我在css中得到了一个关于sprite的快速问题:如果我在css文件中包含两次相同的图像,我会发送两个HTTP请求吗?例如,如果我想从同一图标集图像加载两个不同的按钮:

.btn-1 {
    background:url('img/icons.png') 0 0;
}

.btn-2 {
    background:url('img/icons.png') 0 -60px;
}
Run Code Online (Sandbox Code Playgroud)

还是有另一种方法只包括一次图像?

html css image http css-sprites

4
推荐指数
1
解决办法
535
查看次数

按插入顺序循环QHash

是否可以通过插入顺序循环QHash?下面的方法似乎通过其他一些因素循环哈希:

QHashIterator<QString, QString> i(hash);
while (i.hasNext()) {
    i.next();
    qDebug() << i.key() << ": " << i.value();
}
Run Code Online (Sandbox Code Playgroud)

编辑:

我认为QHash不可能,但我应该使用什么呢?

c++ qt qhash

4
推荐指数
1
解决办法
6540
查看次数

Javascript regExp - 找到括号

我无法弄清楚如何搜索包含"[1]"之类的字符串,由于某些原因这不起作用:

var regExp = '/\[[1-9]\]/';
var search = string.search(regExp); // returns -1
Run Code Online (Sandbox Code Playgroud)

我已经搜遍了所有的解决方案,但找不到任何东西......

javascript regex

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