我在开发社交引擎 4 模块内的小部件时尝试在查询中使用“加入”。我在 Dreamweaver 中工作。我正在尝试替换此工作代码:
//creates query to get user's region
$select = $db->select();
$select->from("engine4_user_fields_search");
$select->where("item_id = ?", $user_id['user_id']);
$stmt = $db->query($select);
$result = $stmt->fetchAll();
然后我必须使用一个长的 if-else 链,使用“幻数”从索引中添加和减去以获得结果。
使用加入,我不需要做所有这些。我可以有一个简单的查询并显示结果。我正在处理的小部件位于选项卡容器中,因此当出现问题时(每次我使用连接),整个选项卡都会消失并导致调试问题。
这是我所拥有的:
<?php
class Widget_RegionalBreakingNewsController extends Engine_Content_Widget_Abstract
{
public function indexAction()
{
//connect to DB
$file = APPLICATION_PATH . '/application/settings/database.php';
$options = include $file;
$db = Zend_Db::factory($options['adapter'], $options['params']);
$select = new Zend_Db_Select($db);
$db->getConnection();
//end DB setup
$user_id = Engine_Api::_()->user()->getViewer();
//SELECT * FROM engine4_user_fields_search as s
//join engine4_user_fields_options as o
//WHERE item_id = <current user's ID> AND s.field_7+22 = o.option_id
$select = $db->select();
$select->from(array('s' => 'engine4_user_fields_search'),
array('s.field_7', 's.user_id'))
->joinInner(array('o' => 'engine4_user_fields_options'),
's.field_7+22 = o.option_id');
$select->where("s.item_id = ?", $user_id['user_id']);
$stmt = $db->query($select);
$result = $stmt->fetchAll();
//print_r($result);
因为这是我使用 Zend 开发的第一周,所以即使是最简单的错误也不要忽视。我很容易不知道可能会产生影响的简单约定。如果有人可以提供帮助,将不胜感激。
PS 无论如何不使用 Zend 选择函数并执行常规 SQL 语句?