$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. :)