There is such a request:

$data = $this->modelsManager->executeQuery(" SELECT Aincrad\Models\Inventory.*, Aincrad\Models\Items.name, Aincrad\Models\Items.description, Aincrad\Models\Items.path_img, Aincrad\Models\Items.lvl, Aincrad\Models\Items.price FROM Aincrad\Models\Inventory JOIN Aincrad\Models\Items ON Aincrad\Models\Inventory.id_item = Aincrad\Models\Items.id WHERE Aincrad\Models\Inventory.id_user = :id_user: AND Aincrad\Models\Inventory.id = :id_item: LIMIT 1 ", array( "id_item" => $idItems, "id_user" => $auth['id'] )); 

The problem is that I cannot get the data for all the columns in Aincrad \ Models \ Inventory. *. Please tell me what I'm doing wrong. You can of course list all the columns in the inventory table manually, but this is inconvenient since the number of columns will increase over time.

 SELECT Aincrad\Models\Inventory.id, Aincrad\Models\Inventory.id_user, Aincrad\Models\Inventory.id_item, Aincrad\Models\Inventory.str, Aincrad\Models\Inventory.dex, Aincrad\Models\Inventory.sta, Aincrad\Models\Inventory.int, Aincrad\Models\Inventory.min_attack, Aincrad\Models\Inventory.max_attack, Aincrad\Models\Inventory.defense, Aincrad\Models\Inventory.critical_chance, Aincrad\Models\Inventory.critical_damage, Aincrad\Models\Inventory.strength, Aincrad\Models\Inventory.created_at, Aincrad\Models\Items.name, Aincrad\Models\Items.description, Aincrad\Models\Items.path_img, Aincrad\Models\Items.lvl, Aincrad\Models\Items.price FROM Aincrad\Models\Inventory JOIN Aincrad\Models\Items ON Aincrad\Models\Inventory.id_item = Aincrad\Models\Items.id WHERE Aincrad\Models\Inventory.id_user = :id_user: AND Aincrad\Models\Inventory.id = :id_item: LIMIT 1 

(At least it works)

    1 answer 1

    The problem is that when you write:

      Aincrad\Models\Inventory.* 

    Phalcon returns you the data that is displayed on the model Aincrad \ Models \ Inventory and therefore it is returned. Make an alias for this model:

     $data = $this->modelsManager->executeQuery(" SELECT Inventory.*, Aincrad\Models\Items.name, Aincrad\Models\Items.description, Aincrad\Models\Items.path_img, Aincrad\Models\Items.lvl, Aincrad\Models\Items.price FROM Aincrad\Models\Inventory Inventory JOIN Aincrad\Models\Items ON Inventory.id_item = Aincrad\Models\Items.id WHERE Inventory.id_user = :id_user: AND Inventory.id = :id_item: LIMIT 1 ", array( "id_item" => $idItems, "id_user" => $auth['id'] )); 

    And when outputting, refer to the class and its public properties or methods.

     foreach ($result as $item) { echo $item->Inventory->id_user; } 

    Only if the properties of the model are public and not hidden by the protected / public modifier.

    • Thanks for the help. - Gildars