2017-04-01 50 views
-1

我有这个控制器代码:通row_array()来笨视图

10 $rowArr=$this->m_model->getItemData($itemID); 
11 $rowArr=['code'=>'123','desc'=>'456','price'=>'789']; 
12 $this->load->view('item_v',$rowArr); 

在我的模型,我有:

$result=$this->db 
    ->select('code','desc','price') 
    ->where('itemID',$itemID) 
    ->get('catalog') 
    ->row_array(); 
return $result; 

当我运行它,我得到预期的123,456,789显示在'code','desc'和'price'列中,因为$ rowArr的第二个定义被发送。但是,当我在第11行注释时,允许第一个(预期的)定义接管 - 我在视图中为所有三个定义了未定义的变量错误。

我认为我使用:

<div> 
    <?php 
     echo "<div>"; 
     echo "code: ".$code."<br>"; 
     echo "desc: ".$desc."<br>"; 
     echo "price: ".$price."<br>"; 
     echo "</div>"; 
    ?> 
</div> 

由于它的工作原理确定使用字面数组我知道这个问题必须在模型 - 毫无疑问,我试图创建从数据库中查询数组目的。 CI文档似乎很清楚,使用row_array()方法应该将db对象转换为一个php数组。我试过了所有可以找到或想到的变体,但没有任何效果。任何人都可以告诉我我犯了什么错误吗?提前致谢。

+0

你明白了什么,当你把这个代码'的var_dump($ rowArr);'下面一行11? – shaggy

+0

当放在第10行以下时,我得到一个很大的NULL。或者当11被注释掉时在第11行下面。 – Banjobum

+0

当第11行运行时,我得到预期列出的变量,123,456,789。 – Banjobum

回答

-1

正如你可以从评论中看到的,感谢@DFriend和@shaggy,我发现了这个问题,但不是我确信的地方。要打开描述为视图页面,上面,用户点击tsEditButt在此代码:

$('.tsEditButt').click(function() { 
    var itemID=$(this).closest('.item').attr('id'); 
    var base_url=$('#hiddenDiv').text(); //'http://localhost/CID17/'; 
    var url=base_url+'controller_a/index/'+itemID,_blank; 
    window.open(url); 

我不知怎么删除线的一部分:

var url=base_url+'controller_a/index/'+itemID,_blank; 

于是有人打开新页面但是itemID缺失并且从未传递给模型。正如@DFriend所说:“如果模型返回null,那么没有记录where itemID = $ itemID”。经过2天的睁大眼睛,我想我会记住这一个。

-2

控制器代码:

$rowArr = $this->m_model->getItemData($itemID); 
$data['code'] = $rowArr->code; 
$data['desc'] = $rowArr->desc; 
$data['price'] = $rowArr->price; 

$this->load->view('item_v', $data); 

型号代码:

public function getItemData($itemID) { 
    $this->db->select('code','desc','price'); 
    $this->db->from('catalog'); 
    $this->db->where('itemID', $itemID); 
    $result_array=$this->db->get(); 
    $result=$result_array->row(); 
    return $result; 
} 
+0

我看到您将数据视为具有模型中属性的行对象 - 您“返回”到控制器。然后在控制器中将每个属性转换为数组'$ data'的元素 - 将其发送到视图。我选择将数据视为数组元素,从数据库到模型转移到控制器以查看 - 希望能够节省一些复杂性。你的方法在很多例子中都可以看到。请帮我理解原因。谢谢。 PS我发现你的回复非常有用。 – Banjobum