これは、データベース内のテーブル製品とカテゴリの例です。
tbl_categories
|id_category | name........| slug........|
|1...........| Hanger .....| hanger .....|
|2...........| Lamp .......| lamp .......|
|3...........| Merchandise | merchandise |
|4...........| Storage ....| storage ....|
tbl_products
id_products | id_category | name .....| slug .....| images
1 ..........| 1 ..........| Hanger asd| hanger-asd|json
2 ..........| 1 ..........| Hanger asd| hanger-dsa|json
3 ..........| 1 ..........| Hanger asd| hanger-das|json
4 ..........| 1 ..........| Hanger asd| hanger-sad|json
画像のコンテンツは、次のように json_encoded です。
id_product: 1
{
"7b8d9fbfe384b1b6e4cfb0da473df8e5": {
"alt": "jhonson hanger",
"caption": "",
"filename": "7b8d9fbfe384b1b6e4cfb0da473df8e5.jpg",
"primary": true
},
"f7d225c85590012f91bad32dd8adaa3d": {
"alt": "jhonson hanger",
"caption": "lorem ipsum lorem ipsum dolor siamet ameticioud",
"filename": "f7d225c85590012f91bad32dd8adaa3d.jpg"
}
}
等
私が最初にしたいことは、すべての製品を e コマース製品ページに表示することです。そのため、コントローラー製品では次のようになります。
function index()
{
$data = array(
"keyword" => "sadasdasd",
"description" => "asdasdasd",
"content" => "product",
"title" => "BALOK Official :: Product"
);
$products = $this->model_product->get_all_products();
$data['products'] = $products;
$this->load->view("product", $data);
}
私のmodel_productで:
function get_all_products()
{
$this->db->select
("
tbl_product.name AS prod_name,
images,
tbl_product.slug AS prod_slug,
tbl_categories.slug AS cat_slug
");
$this->db->from("tbl_products");
$this->db->join("tbl_categories", "tbl_categories.id_category = tbl_product.id_category");
$this->db->order_by("prod_name", "ASC");
$query = $this->db->get();
if($query->num_rows() > 0)
{
return $query->result();
}
else
{
return false;
}
}
製品名、prod_slug、cat_slug、およびビュー内のすべての製品に対して1 つだけを表示する方法、および 「primary = true」の場合はプライマリ イメージを表示するよりも、それ以外の場合は最初のイメージを表示する方法。配列の例かもしれません。images['filename]
images[0];
次のコードを使用して、フィールド イメージのデータを確認しました。
foreach ($products as $prod)
{
$prod->images = json_decode($prod->images);
print_r($prod->images);
}
stdClass
そして、それは次のようなオブジェクトを示しています:
stdClass Object
(
[43f8cd2ba0fcb96453b43b36b6a4f759] => stdClass Object
(
[filename] => 43f8cd2ba0fcb96453b43b36b6a4f759.jpg
[alt] =>
[caption] =>
[primary] => 1
)
)
stdClass Object
(
[f7d225c85590012f91bad32dd8adaa3d] => stdClass Object
(
[filename] => f7d225c85590012f91bad32dd8adaa3d.jpg
[alt] => jhonson hanger
[caption] => lorem ipsum lorem ipsum dolor siamet ameticioud
[primary] => 1
)
[7b8d9fbfe384b1b6e4cfb0da473df8e5] => stdClass Object
(
[filename] => 7b8d9fbfe384b1b6e4cfb0da473df8e5.jpg
[alt] => jhonson hanger
[caption] =>
)
)
stdClass Object
(
[29c2100ff85ec538e17c6d68fafbd43d] => stdClass Object
(
[filename] => 29c2100ff85ec538e17c6d68fafbd43d.jpg
[alt] =>
[caption] =>
[primary] => 1
)
[8d4ecb9c4dc369febe70019586f3d570] => stdClass Object
(
[filename] => 8d4ecb9c4dc369febe70019586f3d570.jpg
[alt] =>
[caption] =>
)
[dc4358c470c33f20206afc180a28ae5b] => stdClass Object
(
[filename] => dc4358c470c33f20206afc180a28ae5b.jpg
[alt] =>
[caption] =>
)
)
そのstdobjectは私を混乱させます。
アップデート。
ビューで私はこれを書きます:
foreach ($products as $prod)
{
echo $prod->prod_name.' - '.$prod->prod_slug.' - '.$prod->cat_slug.'<br>';
}
それは私が望むものを成功に表示します。
Book Cabinets Wood - book-cabinets-wood - storage
Brand New Hanger Jhonson - brand-new-hanger-jhonson - hanger
Flash Wood - flash-wood - 商品
Gantungan baju dari kayu - gantungan-baju-dari-kayu - hanger
Shaman Lamp - shaman-lamp - lamp
Storage Wood Shelf - storage-wood-shelf - storage
Wood Lamp - wood-lamp - lamp
Wood Lamp Transcending - wood-lamp-transcending - lamp
Yoyo Kayu - boneka-kayu-lucu - 商品
画像はまだjson形式であり、それを操作する方法がわかりません.array_valueについて考えているだけで、配列にデコードされた後にjson_dataを変換できますか?