标签: zend-db-select

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

Zend中的setIntegrityCheck选择连接

我正在研究一些 问题,询问如何在Zend Framework查询中进行连接,但答案总是像"只做setIntegrityCheck(FALSE)".

我的问题是:为什么我需要这样做?

在我看来,禁用"完整性检查"并不是使这项工作正常的方法.在我的特定情况下,我正在使用带有外键的一些InnoDB表的MySQL数据库,例如:

CREATE TABLE IF NOT EXISTS `tableA`
(
`id` CHAR(6),
`name` VARCHAR(255),
PRIMARY KEY (`id`)
) ENGINE=InnoDB;

CREATE TABLE IF NOT EXISTS `tableB`
(
`tableA_id` CHAR(6),
`somefield` VARCHAR(255),
PRIMARY KEY (`tableA_id`)
) ENGINE=InnoDB;

ALTER TABLE `tableB` ADD FOREIGN KEY fk1 (`tableA_id`) REFERENCES `tableA` (`id`);
Run Code Online (Sandbox Code Playgroud)

(这是我的数据库的一个非常简化的版本)

而且,我的查询代码如下所示:

$table = new Zend_Db_Table('tableB');
$select = $table->select(TRUE)
  ->join(array('a' => 'tableA'), 'tableB.tableA_id = a.id');
$result = $table->fetchAll($select);
Run Code Online (Sandbox Code Playgroud)

这给了我"选择查询无法与另一个表连接"异常,除非我添加setIntegrity(FALSE)到我的$select.

zend-framework zend-db-select

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

Zend DB选择常量 - 表中不存在的列

我正在尝试使用Zend DB select来执行此查询,但我无法这样做

这是sql查询

select shopping_id,shopping_details,"friend" as type
from shopping

请注意我如何指定"朋友"作为类型,而朋友不是购物表中的列.

现在我如何在Zend中做到这一点.我试过这个但它给了我一个错误说"sh.friend Column不存在"

$select->from(array('sh'=>'shopping'),array('shopping_id','shopping_details','"friend" as type');

任何帮助将不胜感激

zend-framework zend-db-table zend-db zend-db-select

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

如何使用Zend_Db_Select加入子查询

我将如何使用Zend_Db_Select?以下方法构造此查询:

SELECT users.user_id, email_address, t1.value as 'languages'    
FROM users
LEFT JOIN (
  SELECT
    user_id
    , field_id
    , GROUP_CONCAT(value SEPARATOR ',') AS value
  FROM user_multivalued
  WHERE field_id=25
  GROUP BY user_id, field_id) t1
ON t1.user_id = users.users_id
WHERE list_id = 45
Run Code Online (Sandbox Code Playgroud)

zend-framework zend-db-select

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

翻译查询以使用Zend_Db_Select

我在翻译此查询以使用ZF时遇到一些问题Zend_Db_Select:

SELECT b.id, b.title, b.description 
FROM memberships AS m
JOIN blogs AS b ON b.id = m.blog_id 
WHERE m.user_id = ? 
ORDER BY m.created
LIMIT 0, 30
Run Code Online (Sandbox Code Playgroud)

(此查询有效并返回结果)

Membershipsblogs和之间的链接表users.这是一件简单的| id | blog_id | user_id |事情.

这是我到目前为止所拥有的:

// $table = Zend_Db_Table instance, $id = a user id
$select = $table->select()
->from(array('m' => 'memberships'), array('b.id', 'b.title', 'b.description'))
->join(array('b' => 'blogs'), 'b.id = m.blog_id')
->where('m.user_id = ?', (int) $id)
->order('m.created DESC')
->limit(0, 30);
Run Code Online (Sandbox Code Playgroud)

这是我得到的(奇怪的(对我而言)错误: …

zend-framework zend-db-table zend-db-select

7
推荐指数
2
解决办法
4100
查看次数

在Zend Db Select中使用JOINLEFT的GROUP_CONCAT

假设我有2个表

articles
  id              title
  1               Article 1
  2               Article 2


Images
  id              article_id     image
  1               1              a.png
  2               1              b.png
  3               2              c.png
  4               2              d.png
Run Code Online (Sandbox Code Playgroud)

我想要的只是用他们的图像来回顾所有文章.

例如:

article_id     title           images
1              Article 1       a.png, b.png
2              Article 2       c.png, d.png
Run Code Online (Sandbox Code Playgroud)

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

我尝试过类似的东西,但没有运气:

$select = $this->getDbTable()->select()->setIntegrityCheck(false)->distinct();
$select->from(array('a'=>'articles'))
  ->joinLeft(array('i'=>'images'),'i.article_id=a.id',array('images'=> new
               Zend_Db_Expr('GROUP_CONCAT(i.image)')));
Run Code Online (Sandbox Code Playgroud)

它只返回1行'images'字段包含两篇文章的图像.

article_id     title           images
1              Article 1       a.png, b.png, c.png, d.png
Run Code Online (Sandbox Code Playgroud)

我在这做错了什么?

mysql zend-framework left-join group-concat zend-db-select

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

Zend Framework:如何使用多个参数进行数据库选择?

我只是想知道在Zend Framework中执行db select的语法是什么,其中两个值为true.示例:我想查找用户是否已经是组的成员:

$userId = 1;
$groupId = 2;
$db = Zend_Db_Table::getDefaultAdapter();
$select = new Zend_Db_Select($db);
$select->from('group_members')
    ->where('user_id = ?', $userId); //Right here. What do I do about group_id?
$result = $select->query();
$resultSet = $result->fetchAll();
Run Code Online (Sandbox Code Playgroud)

zend-framework zend-db zend-db-select

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

如何在Zend Framework中使用GROUP_CONCAT?

假设我有一张桌子:学生

______________________________________________________
|id   | name           | school        | class        |
______________________________________________________
| 1   | John           | ABC           | C1           |
| 2   | Jack           | ABC           | C1           |
| 3   | Anna           | ABC           | C1           |
| 4   | Peter          | DEF           | D1           |
| 5   | Alex           | ABC           | C2           |
| 6   | Bryan          | ABC           | C2           |
| 7   | David          | ABC           | C2           |
| 8   | Cristian       | DEF …
Run Code Online (Sandbox Code Playgroud)

php mysql zend-framework group-concat zend-db-select

6
推荐指数
1
解决办法
5996
查看次数

使用Zend Framework进行内部联接的最佳方法?

看起来有几种不同的方法可以使用Zend Framework连接两个表,但我以前从未这样做过,所以我不知道哪种方法最好.

这就是我要做的......

我的数据库中有3个表:

users
    ( id , name )
groups
    ( id , name )
group_members
    ( id , group_id , user_id )
Run Code Online (Sandbox Code Playgroud)

我正在尝试查找用户所属的组并将其显示给用户.这个SQL语句几乎完成了这项工作(虽然可能有更好的方法来编写它).它只返回我关注的列,它们是组的id和title.

    SELECT groups.id, groups.title
    FROM group_members
        INNER JOIN groups
        ON groups.id = group_members.group_id
    WHERE user_id = $userId
Run Code Online (Sandbox Code Playgroud)

如何使用Zend Framework完成此操作?

zend-framework inner-join zend-db-table zend-db zend-db-select

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

如何使用Zend框架编写子查询重构WITH子句?

我想WITH在Zend框架中使用SQL查询中的语法,SQL看起来像这样:

WITH t AS
(SELECT item_id, row_number() OVER (ORDER BY some_criteria DESC) rn
   FROM orders)
SELECT t2.rn, t2.item_id
  FROM t t1 JOIN t t2 ON (t2.rn > t1.rn)
 WHERE t1.item_id = 145;
Run Code Online (Sandbox Code Playgroud)

我怎么能在Zend Framework中这样做?用Zend_Db_Select?有什么建议?

sql oracle zend-framework zend-db zend-db-select

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