PHP (using EC-CUBE 3.0.10) is trying to retrieve the target (store name) data (item category) from DB and get more parent categories from it to be displayed.
The flow is
①—Retrieves the username (identical to the store name) from the user information.
②: Using the username obtained in で, obtain the category name of the same person and put it in an array.
③: Obtain the parent category that belongs to the category obtained in で.
④: For display, combine multiple array categories into one (like packing while looping with foreach)
I tried to do it with for, but I'm trying to use foreach because it's better to use foreach for arrays, but I don't really understand how to use array_merge to combine foreach with arrays...
// Since the store name is the same as the username, the username is obtained from the user information and stored in the $name below.
$name = $app['user']->getName();
// Obtain the category name that matches the username obtained.
$categories=$em->getRepository('\Eccube\Entity\Category') ->findBy(array('name'=>$name));
// TODO I want to get the parent category ID to which this acquired category name belongs.
Could you lend me some advice?
Thank you for your cooperation.
Dear kitar,
Thank you for your reply.
I think it was difficult to communicate because of my poor writing ability...
Sorry
As an example, the categories are registered as follows:
Tableware
Store A
Store C
Furniture
Store B
Store C
In this case, $categories
stores information for Store A and Store B.
Example: Store B
0=>Category {#1724▼
-id : 10
-name: "Store B"
-level:2
-rank —6
-create_date:DateTime {#1721▶}
- update_date:DateTime {#1722▶}
-del_flg:0
- CategoryCount: null
- CategoryTotalCount: null
- ProductCategories: PersistentCollection {#1733▶}
- Children: PersistentCollection {#1735▶}
- Parent: Category {#1782▶}
- Creator: Member {#1374▶}
}
In the case of store C, there are store C belonging to tableware and store C belonging to furniture.
0=>Category {#1735▼
-id : 11
-name: "Store C"
-level:2
-rank: 7
-create_date:DateTime {#1732▶}
- update_date:DateTime {#1733▶}
-del_flg:0
- CategoryCount: null
- CategoryTotalCount: null
- ProductCategories: PersistentCollection {#1744▶}
- Children: PersistentCollection {#1746▶}
- Parent: Category {#1793▶}
- Creator: Member {#1792▶}
}
1 = > Category {#1789 ▼
- id : 13
-name: "Store C"
-level:2
-rank:3
-create_date:DateTime {#1791▶}
- update_date: DateTime {#1790▶}
-del_flg:0
- CategoryCount: null
- CategoryTotalCount: null
- ProductCategories: PersistentCollection {#1788▶}
- Children: PersistentCollection {#1786▶}
- Parent: Category {#1784▶}
- Creator: Member {#1792▶...2}
}
Because of the array, it may be ideal to use foreach, but
for($i=0;$i<count($categories);$i++){
・・・
}
This for also works correctly, so I don't mind doing it in the for way...
There are times and times, so I'd like to pack them so that even if there are more than one, they work fine.
By default, EC-CUBE has a separate logic for retrieving the parent category, which can be retrieved in the getPath
entity class of Category
and will be used.
When I put the following in the for statement above, it was overwritten in more than one case later.
$category=$categories[$i]->getPath();
Tableware
Store A
Store C
Furniture
Store B
Store C
For store name A,
Tableware
Store A
For store name C
Tableware
Store C
Furniture
Store C
Do you recognize that you want to display ?
If that's the case, then if it's to fit the question,
$parents=array();
foreach($categories as$categories){
$parent = {Retrieve Parent Category};
$set_parents[$parent["name"] = $parent;
$parents = array_merge($parents, $set_parents);
}
above or
If you follow the rule that IDs are unique,
$parents=array();
foreach($categories as$categories){
$parent = {Retrieve Parent Category};
$parents[$parent["id"] = $parent;
}
I think I can do it here.
620 Uncaught (inpromise) Error on Electron: An object could not be cloned
916 When building Fast API+Uvicorn environment with PyInstaller, console=False results in an error
573 rails db:create error: Could not find mysql2-0.5.4 in any of the sources
574 Who developed the "avformat-59.dll" that comes with FFmpeg?
© 2024 OneMinuteCode. All rights reserved.