2013-04-04 233 views
0

這個函數有問題。它應該返回使用下面的sql調用收集的json字符串數據。問題是,當通過我的服務器訪問頁面時(例如 - localhost/app/API/states/Alabama/1/10.json),我得到錯誤代碼「500」。奇怪的是,數據顯示如預期使用.json和沒有附加.json。控制器和模型建立就好了,據我所知道的,但仍然是錯誤代碼:錯誤:SQLSTATE [42S22]:找不到列:1054 Where子句中的未知列

{"code":500,"url":"/VOI2/API/states/Alabama/2/10.json","name":"SQLSTATE[42S22]: >Column not found: 1054 Unknown column 'states' in 'where >clause'","error":{"errorInfo":["42S22",1054,"Unknown column 'states' in 'where >clause'"]

public function index($stateName, $page, $limit = 10, $user = null) { 
$this->State->recursive = 0; 
$limit; 
$set_limit = $page * $limit - ($limit); 
$states = $this->State->query("SELECT * 
FROM states, issues 
WHERE stateName = '" . $stateName ."' 
AND issues.state_id = states.id LIMIT " . $set_limit . "," . $limit)  
$this->set('states', $this->paginate($states)); 
$this->set('_serialize', array('states')); 
} 

問題是與模型/控制器中的另一個表。我想以有意義的方式設置網址是我選擇將問題與狀態分開的原因。 謝謝大家的幫助。

回答

0

您應該按照CakePHP的預期使用您的模型。見Retrieving Your Data

通過使用'自定義'查詢,CakePHP不會阻止SQL注入,並且您需要'手動',導致很多問題;

而且,因爲要顯示所有問題,但它們進行過濾的國家他們屬於,則應該從Issue模型檢索數據,而不是State

指定模型的關係

應用/型號/ State.php

class State extends AppModel { 
    public $hasMany = array(
     'Issue' 
    ); 
} 

應用/型號/ Issue.php

class Issue extends AppModel { 
    public $belongsTo = array(
     'State' 
    ); 
} 

進行分頁數據,請參閱Pagination

而且你的控制器內:

class MyController extends AppController { 

    public $paginate = array(
     'Issue' => array(
      // Default limit, can be overridden via 'limit' named parameter 
      // e.g. /MyController/index/limit:20 
      'limit' => 10, 

      // Probably required to get 'State' in the results 
      'recursive' => 1, 
     ); 
    ); 

    public function index($stateName) 
    { 
     $conditions = array(
      'State.stateName' => $stateName 
     ); 

     // I'll leave this name for now, better call it 'issues'? 
     $states = $this->paginate('Issue', conditions) 

     $this->set('states', states); 
     $this->set('_serialize', array('states')); 
    } 
} 

爲了呈現分頁數據,你也應該使用PaginatorHelper

手動連接表/模型

如果默認的模型關係不符合您的要求s,您可以手動將表連接在一起;請參閱本章文檔中:

Joining tables

注: 我沒有測試過這些例子,它會可能工作,否則它是一個很好的出發點,讓你去

相關問題