我有一个动物表:
id | name
1 cat
2 dog
我有一个品种表:
id | breed | color
1 siamese white
2 tabby mixed
3 golden retriever yellow
我有一个动物饲养表:
id | animal_id | breed_id
1 1 1
2 1 2
3 2 3
我想把每只动物及其所有品种/颜色放入一个数组中,然后将其传递给JS。
所以数据应该是这样的:
array('animal' => 'cat', 'details' => array(array('breed' => 'siamese', 'color' => 'white'), array('breed' => 'tabby', 'color' => 'mixed')) 'animal' => 'dog...etc);
我不确定在查询虽然?我需要得到所有动物的数据
这应该能奏效:
$query = "SELECT a.name, b.breed, b.colour
FROM animals a
LEFT JOIN animaltobreeds ab on a.id = ab.animal_id
LEFT JOIN breeds b on b.id = ab.breed_id";
$results = $mysqli->query($query);
$data = array(); // We'll build our results into here.
if($results->num_rows) {
while($row = $results->fetch_assoc()) {
if( ! isset($data[$row['name']]) $data[$row['name']] = array();
$data[$row['name']][] = array(
'breed' => $row['breed'],
'colour' => $row['colour']
);
}
}
如果你想把它输出到Javascript中,你可以使用json_encode($data)
把它转换成JSON,然后导入到Javascript中。
你可能会注意到我已经做了一个稍微不同的结构,你所要求的,这将是这样的:
array('cats' => array('breed => 'siamese', 'colour' => 'white'), array('breed' => 'tabby', 'color' => 'mixed'));
我认为它更容易使用,但如果你真的需要它成为你想要的样子,它应该很容易调整。