CodeIgniter Forums
DataMapper ORM v1.8.0 - Printable Version

+- CodeIgniter Forums (https://forum.codeigniter.com)
+-- Forum: Archived Discussions (https://forum.codeigniter.com/forumdisplay.php?fid=20)
+--- Forum: Archived Libraries & Helpers (https://forum.codeigniter.com/forumdisplay.php?fid=22)
+--- Thread: DataMapper ORM v1.8.0 (/showthread.php?tid=37531)



DataMapper ORM v1.8.0 - El Forum - 03-05-2011

[eluser]endielo[/eluser]
[quote author="WanWizard" date="1299367657"]What exactly are you trying to achieve with this query? It looks quite complicated to me, for the result it produces...[/quote]

I m trying to answer Brainer question, the code i wrote may be too complicate,
he just want a simple inner join with two related object.
May be you are the most suitable person to solve his problem.

Btw, I think why not to setup a separated forum for data mapper, now it is too difficult to get help and search post.

--
Endie Lo


DataMapper ORM v1.8.0 - El Forum - 03-05-2011

[eluser]WanWizard[/eluser]
As @brainer already mentioned, there are methods available to include related data, see http://datamapper.wanwizard.eu/pages/getadvanced.html#include_related.

In the case of @BrendanRehman you can simply do
Code:
$u = new User();
$u->include_related('relateduser')->get();

In the case of @brainer, the answer is the same
Code:
$b = new Book();
$b->include_related('pages')->get();

As the manual says "This method can significantly reduce your query overhead.".


DataMapper ORM v1.8.0 - El Forum - 03-05-2011

[eluser]IgnitedCoder[/eluser]
Perfect... I needed to use

Code:
->include_join_fields()

Next question is how would I include mutual connections

Say user 1 and 4 are related and user 4 and 8 are related and user 8 and 1 are related.. I want to show the related connections as in (2) connections in common. Which is a link that shows the related connections in common.

Any thoughts/suggestions are welcome.

BTW - Very cool library, saved me having to write tons of SQL and I think with eAccel setup and a good server its going to FLY!

Brendan


DataMapper ORM v1.8.0 - El Forum - 03-05-2011

[eluser]endielo[/eluser]
[quote author="WanWizard" date="1299373804"]As @brainer already mentioned, there are methods available to include related data, see http://datamapper.wanwizard.eu/pages/getadvanced.html#include_related.

In the case of @BrendanRehman you can simply do
Code:
$u = new User();
$u->include_related('relateduser')->get();

In the case of @brainer, the answer is the same
Code:
$b = new Book();
$b->include_related('pages')->get();

As the manual says "This method can significantly reduce your query overhead.".[/quote]

i think @brainer problem is that the included is $has_many side ,
the doc said that "This method will only work with $has_one related models"
also, the include_related it NOT filter out any book because it is a 'left outer join'

so...
directly use CI active record may be the other solution in this case
--
Endie Lo


DataMapper ORM v1.8.0 - El Forum - 03-06-2011

[eluser]WanWizard[/eluser]
You are right, I missed that.

In case of the books, you could filter the results by excluding all NULL values of the foreign key.

With the current development version (1.8.1-dev), on bitbucket, include_related() works on has_many relationships as well.
That line in the docs has been replaced by "This method creates a full join on both tables. Make sure to use the appropriate WHERE clauses, and/or use DISTINCT, to limit the number of rows in the result!"


DataMapper ORM v1.8.0 - El Forum - 03-06-2011

[eluser]endielo[/eluser]
[quote author="WanWizard" date="1299428129"]You are right, I missed that.

In case of the books, you could filter the results by excluding all NULL values of the foreign key.

With the current development version (1.8.1-dev), on bitbucket, include_related() works on has_many relationships as well.
That line in the docs has been replaced by "This method creates a full join on both tables. Make sure to use the appropriate WHERE clauses, and/or use DISTINCT, to limit the number of rows in the result!"[/quote]

OH...
it is really COOL now ...


DataMapper ORM v1.8.0 - El Forum - 03-07-2011

[eluser]Dennis Rasmussen[/eluser]
Done a lot of google searching, no result.
How do you work with Datamapper + Pagination (preferably the CI library)?

Ì'm sure the next one is simple, but not sure what method is the best.
With two tables related as many:many with a join table, how do you select the content of table1 with a filter (where) on table2?


DataMapper ORM v1.8.0 - El Forum - 03-07-2011

[eluser]WanWizard[/eluser]
Dennis,

How about
Code:
$table1->where_related('table2', 'field', 'value')->get();

As for pagination, check out http://datamapper.wanwizard.eu/pages/getalt.html, get_paged() and get_paged_iterated().


DataMapper ORM v1.8.0 - El Forum - 03-07-2011

[eluser]Dennis Rasmussen[/eluser]
WanWizard,

Awesome. Does where_related and where_related_{model} only work for one field or do you either use an array or chain with another where_related on the same model?


DataMapper ORM v1.8.0 - El Forum - 03-07-2011

[eluser]WanWizard[/eluser]
You can chain to your hearts content. Multiple where_related() calls will add the field to the WHERE clause using AND (unless you use or_where_related() Wink).