使用Zend Framework,有没有办法使用quoteInto方法将多个条件传递给更新语句?我发现了一些对这个问题的引用,但我正在寻找一种支持的方式,而不必扩展Zend_Db或没有连接.
$db = $this->getAdapter();
$data = array('profile_value' => $form['profile_value']);
$where = $db->quoteInto('user_id = ?', $form['id'])
. $db->quoteInto(' AND profile_key = ?', $key);
$this->update($data, $where);
Run Code Online (Sandbox Code Playgroud)
参考
我想在Zend_Db中生成这个复杂的WHERE子句:
SELECT *
FROM 'products'
WHERE
status = 'active'
AND
(
attribute = 'one'
OR
attribute = 'two'
OR
[...]
)
;
Run Code Online (Sandbox Code Playgroud)
我试过这个:
$select->from('product');
$select->where('status = ?', $status);
$select->where('attribute = ?', $a1);
$select->orWhere('attribute = ?', $a2);
Run Code Online (Sandbox Code Playgroud)
那产生了:
SELECT `product`.*
FROM `product`
WHERE
(status = 'active')
AND
(attribute = 'one')
OR
(attribute = 'two')
;
Run Code Online (Sandbox Code Playgroud)
我确实找到了一种方法来完成这项工作,但我觉得通过先使用PHP组合"OR"子句然后使用Zend_Db where()子句将它们组合起来,这有点"作弊".PHP代码:
$WHERE = array();
foreach($attributes as $a):
#WHERE[] = "attribute = '" . $a . "'";
endforeach;
$WHERE = implode(' OR ', $WHERE);
$select->from('product');
$select->where('status …Run Code Online (Sandbox Code Playgroud) 我已经按照一个示例,并希望将数据库适配器传递给字段集以创建下拉菜单.
下面的代码是我如何调用fieldset.
如何访问BrandFieldset类中的数据库适配器?
$this->add(array(
'type' => 'Application\Form\BrandFieldset',
'name' => 'brand',
'options' => array(
'label' => 'Brand of the product',
),
));
Run Code Online (Sandbox Code Playgroud) 我正在使用相当于此查询的数据库从数据库中选择记录:
SELECT * FROM reports WHERE user_id IN (3, 6, 22);
Run Code Online (Sandbox Code Playgroud)
调用fetchAll()的函数有一个参数,它是一个用户ID数组,这个调用工作得很好:
$resultSet = $this->getDbTable()->fetchAll('user_id IN (' . implode(', ', $userIds) . ')');
Run Code Online (Sandbox Code Playgroud)
但是,我想为where子句使用一个数组,因为稍后可能会对查询有其他限制...而且我无法弄明白我的生活.我认为这将是以下的一些变化:
$resultSet = $this->getDbTable()->fetchAll(array('user_id IN ?' => '(' . implode(', ', $userIds) . ')'));
Run Code Online (Sandbox Code Playgroud)
但到目前为止还没有骰子.有人可以在这里提供正确的语法吗?
我在一些项目中使用Zend_Db,我发现Doctrine有一段时间但从未实际使用它.
Doctrine比Zend_Db有什么优势?使用Doctrine有什么好处?
顺便说一句,使用Zend Framework 1.10.7的Doctrine是否容易?与其他组件集成和使用?因为它似乎不存在Doctrine适配器
谢谢
您如何在Zend框架中编写以下查询?
SELECT * FROM table_name ORDER BY FIELD(field_name, 'Small','Medium','Large');
我只需要"订购"部分:)
谢谢!
我用这段代码在我的数据库中插入一个新行:
$data = array(
'key' => 'value'
);
$this->getDbTable()->insert($data);
Run Code Online (Sandbox Code Playgroud)
如何获取刚刚创建的此行的行ID?
我正在使用流畅的界面来创建Zend DB Select对象/查询.作为查询的一部分,我想选择一个任意字符串,例如"SELECT'foo'AS'type'FROM ...".foo不是一个列,它只是一个字符串文字.
当我选择任意数字时,查询按预期工作.当我将其更改为字符串时,Zend会尝试将foo视为列,并抛出错误:
SQLSTATE[42S22]: Column not found: 1054 Unknown column 'l.foo' in 'field list'
Run Code Online (Sandbox Code Playgroud)
我尝试以各种方式在Zend_Db_Expr中包装字符串,例如:
$select->columns(array('type' => new Zend_Db_Expr('foo')));
Run Code Online (Sandbox Code Playgroud)
这会阻止Zend添加相关名称,但它仍然将其视为列:
SQLSTATE[42S22]: Column not found: 1054 Unknown column 'foo' in 'field list'
Run Code Online (Sandbox Code Playgroud)
我觉得我必须在这里遗漏一些明显的东西.我如何告诉Zend停止将其视为一个列?
我正在尝试使用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_DB并尝试将charset更改为utf8,这里是代码:
config.ini:
[development]
db.host = "localhost"
db.username = "root"
db.password = "toor"
db.dbname = "db_whoopdiedo"
db.charset = "utf8"
Run Code Online (Sandbox Code Playgroud)
bootstrap.php:
class Bootstrap extends Zend_Application_Bootstrap_Bootstrap
{
public function _initAutoload()
{
Zend_Registry::set(
'config',
new Zend_Config_Ini(APPLICATION_PATH.'/configs/config.ini', 'development')
);
Zend_Registry::set(
'db',
Zend_Db::factory('Pdo_Mysql', Zend_Registry::get('config')->db)
);
Zend_Registry::get('db')->setFetchMode(Zend_Db::FETCH_OBJ);
Zend_Registry::get('db')->query("SET NAMES 'utf8'");
Zend_Registry::get('db')->query("SET CHARACTER SET 'utf8'");
}
}
Run Code Online (Sandbox Code Playgroud)
我认为在配置中添加charset就足够了,但是只有在我直接使用以下设置时才应用它:
Zend_Registry::get('db')->query("SET NAMES 'utf8'");
Zend_Registry::get('db')->query("SET CHARACTER SET 'utf8'");
Run Code Online (Sandbox Code Playgroud)
我的问题:有没有更好的方法来设置charset,也许配置明智?