我刚刚开始使用CakePHP并遇到了一些问题。 我有在MySQL数据库中搜索两个表看起来像这样的这种搜索功能(艺术家和ArtistSurname):CakePHP与json的搜索功能
class ArtistsController extends AppController {
public function search ($search) {
if ($search){
$artists = $this->Artist->find('all', array('conditions' => array("surname like '%$search%' AND Artist.id = ArtistSurname.artist_id OR firstname like '%$search%' AND Artist.id = ArtistSurname.artist_id"), 'limit' => 400, 'fields' => array('Artist.firstname', 'ArtistSurname.surname', 'Artist.dbirth', 'Artist.id')));
if (!$artists){
throw new NotFoundException(__('No search result.'));
}
$result = array();
foreach ($artists as $artist) {
$fetchedArtist = array('value' => $artist['ArtistSurname']['surname'] . " " . $artist['Artist']['firstname'], 'year' => $artist['Artist']['dbirth'], 'id' => $artist['Artist']['id']);
array_push($result, $fetchedArtist);
}
header("Content-Type: application/json");
echo json_encode($result);
$this->autoRender = false;
}
}
我把我的结果在一个新的可读阵列自动完成我的查询后(typeahead.js )和 作为json回声。只要查询找到名字,这个工作就可以了,但如果查询只找到姓,则不会。奇怪的是,我只从我的GET请求中接收到application/json,当找到firstname时,我会在text/html中得到正确的结果。为什么是这样?
对于json部分你想阅读这个http://book.cakephp.org/2.0/en/views/json-and-xml-views.html – burzum