Kohana设置会话和数据库

时间:2012-12-03 18:03:47

标签: php orm kohana

我正在创建一个小型购物车,我将我的产品保存在一个会话中(没有数据库)。我的会话设置了产品ID。但是如何从我的数据库中获取与我存储的会话中的产品ID匹配的正确产品?

代码:

foreach ( (isset($shopcart) && is_array($shopcart) && count($shopcart) > 0) ? $shopcart : array() as $item )
{  
    $this->template->shopcart =  $shopcart;
}

<?php if( isset( $shopcart ) ): ?>
            <?php foreach ($shopcart as $item): ?>
             <?php echo $item['id'] ?>
  <?php endforeach ?>
<?php endif; ?>

编辑:

 foreach ( (isset($shopcart) && is_array($shopcart) && count($shopcart) > 0) ? $shopcart : array() as $item )
    {  
        $this->template->shopcart  = DB::select()->where('id', 'IN', $item['id']) ->from('products')->execute();

        //$this->template->shopcart =  $shopcart;
    }

Database_Exception [1064]:您的SQL语法有错误;查看与您的MySQL服务器版本相对应的手册,以便在第1行的“5”附近使用正确的语法[SELECT * FROM products WHERE id IN'5']

编辑2:

$this->template->shopcart = array();

if (count($shopcart))
{
  $this->template->shopcart = 
    DB::select()
    ->where('id', 'IN', $item)
    ->from('products')
    ->execute();
}

模板:

<?php if( isset( $shopcart ) ): ?>
  <?php foreach ($shopcart as $item): ?>
<?php echo $item['id'] ?> //This is the product id in my saved session but i need to get the name from the database


 <?php endforeach ?>
 <?php endif; ?>

1 个答案:

答案 0 :(得分:2)

您使用的是ORM还是查询构建器?如果您使用ORM,您可以这样做:

$this->template->shopcart = 
    ORM::factory('products')
    ->where('id', 'IN', $_SESSION['cart'])
    ->find_all();

如果您使用的是查询构建器:

$this->template->shopcart = 
     DB::select()
     ->where('id', 'IN', $_SESSION['cart'])
     ->from('products')
     ->execute();

在您看来,现在按照您的$shopcart进行迭代。

使用你的案例,(把它从你的循环中取出)

$this->template->shopcart = array();

if (count($shopcart))
{
  $product_ids = array();
  foreach ($shopcart as $item)
  {
     $product_ids[] = $item['id'];
  }
  $this->template->shopcart = 
    DB::select()
    ->where('id', 'IN', $product_ids)
    ->from('products')
    ->execute();
}