$this->modelsManager->createBuilder() ->from('Projects') ->leftJoin('Members') ->getQuery() ->execute();
This gives me whole query structure but i need only nested array. Is there a way to do it without foreach loop like setHydration.
Thank you
|  | Oct '14 | 9 | 1639 | 1 | 
$this->modelsManager->createBuilder() ->from('Projects') ->leftJoin('Members') ->getQuery() ->execute();
This gives me whole query structure but i need only nested array. Is there a way to do it without foreach loop like setHydration.
Thank you
$this->modelsManager->createBuilder() ->from('Projects') ->leftJoin('Members') ->getQuery() ->execute()->toArray(); //This?I watch Phalcon 2.0.0 and I didnt found any methods like setHydration mod on QueryBuilder or execute() methods but It's posible in Criteria in Phalcon 2, but not a public method
No in Phalcon 1 https://docs.phalcon.io/en/latest/api/Phalcon_Mvc_Model_Criteria.html https://docs.phalcon.io/en/latest/api/Phalcon_Mvc_Model_ResultsetInterface.html
For now Phalcon ORM is useless Item
It think you can use @max variant or user Phalcon\Db\Result\Pdo fetch ASSOC https://docs.phalcon.io/en/latest/api/Phalcon_Db_Result_Pdo.html
Bad news for you :)
https://github.com/phalcon/cphalcon/blob/2.0.0/phalcon/mvc/model/resultset.zep#L385
I watch Phalcon 2.0.0 and I didnt found any methods like setHydration mod on QueryBuilder or execute() methods but It's posible in Criteria in Phalcon 2, but not a public method
No in Phalcon 1 https://docs.phalcon.io/en/latest/api/Phalcon_Mvc_Model_Criteria.html https://docs.phalcon.io/en/latest/api/Phalcon_Mvc_Model_ResultsetInterface.html
For now Phalcon ORM is useless Item
It think you can use @max variant or user Phalcon\Db\Result\Pdo fetch ASSOC https://docs.phalcon.io/en/latest/api/Phalcon_Db_Result_Pdo.html
Bad news for you :)
I saw this
https://github.com/phalcon/cphalcon/blob/2.0.0/phalcon/mvc/model/resultset.zep#L385 This doesnt do anything, only int type.
https://github.com/phalcon/cphalcon/blob/2.0.0/phalcon/mvc/model/resultset.zep#L385
I watch Phalcon 2.0.0 and I didnt found any methods like setHydration mod on QueryBuilder or execute() methods but It's posible in Criteria in Phalcon 2, but not a public method
No in Phalcon 1 https://docs.phalcon.io/en/latest/api/Phalcon_Mvc_Model_Criteria.html https://docs.phalcon.io/en/latest/api/Phalcon_Mvc_Model_ResultsetInterface.html
For now Phalcon ORM is useless Item
It think you can use @max variant or user Phalcon\Db\Result\Pdo fetch ASSOC https://docs.phalcon.io/en/latest/api/Phalcon_Db_Result_Pdo.html
Bad news for you :)
Oh, Sorry, my wrong message I was going to said "no setHydration was founded in Phalcon 1.3 and in Phalcon 2.0 It cant be used as hydration method" Phalcon 1.3 https://github.com/phalcon/cphalcon/search?utf8=%E2%9C%93&q=setHydration
You said:
Bad news for you :)
I didnt found any methods like setHydration
I'm showing you where the setHydration is
You can determined any columns in your query as like :
return $this->getDI()->getModelsManager()->createBuilder()
            ->columns([
                'replays.*',
                'author.*',
                'discussion.*'
                ])
            ->from([
                'replays'         => '\Forum\Apps\Models\Replays',
                ])
            ->leftjoin('\Forum\Apps\Models\Users', 'replays.user_id = author.id', 'author')
            ->leftjoin('\Forum\Apps\Models\Discussions', 'replays.discussion_id = discussion.id', 'discussion')
            ->where('replays.discussion_id = :id:', array('id' => $id))
            ->orderBy(["replays.created_at DESC"])
            ->getQuery()
            ->execute();Yes but i want to nested arrays with the sub models data. This give me one directional data. I magage to fix the situation with lopping through parent model's foreach and add joined data on every iteration.
You can determined any columns in your query as like :
return $this->getDI()->getModelsManager()->createBuilder() ->columns([ 'replays.*', 'author.*', 'discussion.*' ]) ->from([ 'replays' => '\Forum\Apps\Models\Replays', ]) ->leftjoin('\Forum\Apps\Models\Users', 'replays.user_id = author.id', 'author') ->leftjoin('\Forum\Apps\Models\Discussions', 'replays.discussion_id = discussion.id', 'discussion') ->where('replays.discussion_id = :id:', array('id' => $id)) ->orderBy(["replays.created_at DESC"]) ->getQuery() ->execute();
Don't know....
Result of call this method is full iterability :
This code is used in Replays model as
public function getreplaysFromDiscussion($id) {
        return $this->getDI()->getModelsManager()->createBuilder()
            ->columns([
                'replays.*',
                'author.*',
                'discussion.*'
                ])
            ->from([
                'replays'         => '\Forum\Apps\Models\Replays',
                ])
            ->leftjoin('\Forum\Apps\Models\Users', 'replays.user_id = author.id', 'author')
            ->leftjoin('\Forum\Apps\Models\Discussions', 'replays.discussion_id = discussion.id', 'discussion')
            ->where('replays.discussion_id = :id:', array('id' => $id))
            ->orderBy(["replays.created_at DESC"])
            ->getQuery()
            ->execute();                
    }in controller -
$r = new Replays();
        $res = $r->getreplaysFromDiscussion(5)->getFirst();
        foreach ($res as $key => $value) {
            var_dump($res->$key->toArray());
        }result
array(6) {
  ["id"]=>
  string(1) "3"
  ["body"]=>
  string(16) "replay bodt test"
  ["discussion_id"]=>
  string(1) "5"
  ["user_id"]=>
  string(1) "1"
  ["created_at"]=>
  string(2) "31"
  ["updated_at"]=>
  string(2) "31"
}
array(4) {
  ["id"]=>
  string(1) "1"
  ["email"]=>
  string(14) "[email protected]"
  ["nikname"]=>
  string(5) "user1"
  ["password"]=>
  string(5) "12345"
}
array(7) {
  ["id"]=>
  string(1) "5"
  ["title"]=>
  string(31) "test discuss with topic control"
  ["topic"]=>
  string(36) "test discuss with topic control body"
  ["categoriesId"]=>
  string(1) "1"
  ["usersId"]=>
  string(1) "1"
  ["createdAt"]=>
  string(10) "1409414692"
  ["slug"]=>
  string(31) "test_discuss_with_topic_control"
}I don't see obstacles anything.
That's solution no doubt. i'm new at Phalcon (phalcon is great nut:)) but in Eloquent ORM you can join hasMany models in reqursive array. For example;
<?php
    Project::find(5)->with('Members')->get() 
?>gives,
 [
    "id" => 5,
    "project_name" => "bla bla",
    "Members" => [
        ["id" => 88, "name" => "John"],
        ["id" => 89, "name" => "Fatih"],
        ..
    ]
 ]Then you can use Phalcon ORM. You will get same result.
No obstacle :
$r = new Replays();
        var_dump($r->findFirst()->getDiscussion()->toArray());result
array(7) {
  ["id"]=>
  string(1) "5"
  ["title"]=>
  string(31) "test discuss with topic control"
  ["topic"]=>
  string(36) "test discuss with topic control body"
  ["categoriesId"]=>
  string(1) "1"
  ["usersId"]=>
  string(1) "1"
  ["createdAt"]=>
  string(10) "1409414692"
  ["slug"]=>
  string(31) "test_discuss_with_topic_control"
}Phalcon allows you to do all that Laravel can, and more...
I'm using Phalcon and Laravel in my business.
Laravel is weaker than Phalcon in functionality, I experienced this in practice. :)