group_concat を使用せずにこれを行う方法を考えていました。私のレビューは非常に長いため、group_concat はそれらを使い果たしているため、すべてのレビューが返されるわけではありません。他に考えられる唯一の方法は、クエリをループすることです。いくつかの製品と各製品のいくつかのレビューがあることを知っているだけです. 何か案は?
$this->db->select("product.id,
product.name as name,
group_concat(user.name) as user,
group_concat(rating.overall) as overall,
group_concat(rating.description SEPARATOR '|') as review");
$this->db->join('rating', 'rating.idProduct = alcohol.id', 'LEFT');
$this->db->join('user', 'user.id = rating.idUser', 'LEFT');
$query = $this->db->get('product');
return $query->result();
次のように出力します。
[0] => stdClass Object (
[name] => Product
[reviews] => Array(
[0]=> (
[user] => "cKendrick "
[overall] => "1"
[Rating] => "lalalalalala review"
)
[1] = >
(...
)
)
[1] => stdClass Object (..
アップデート:
"SELECT product.id,
product.name as name,
category.permName as category,
subCategory.permName as subCategory,
product.permName as permName,
product.picture as picture,
user.username as username,
user.firstName as firstName,
user.lastName as lastName,
user.picture as userPicture,
rating.description as review
FROM (
SELECT *
FROM product
LIMIT ?, 30
) product
LEFT JOIN category
ON category.id = product.category
LEFT JOIN subCategory
ON subCategory.id = product.subCategory
LEFT JOIN rating
ON rating.idAlcohol = product.id
LEFT JOIN user
ON user.id = rating.idUser
ORDER BY product.lastReview desc"
カテゴリごとに制限するにはどうすればよいですか?