2012-03-10 00:06:32 -03:00
< ? php
2016-12-08 18:01:04 +01:00
use Doctrine\Tests\Models\CMS\CmsAddress ;
use Doctrine\Tests\Models\CMS\CmsUser ;
2016-12-07 23:33:41 +01:00
$metadata -> setPrimaryTable (
[
2012-03-10 00:06:32 -03:00
'name' => 'cms_users' ,
2016-12-07 23:33:41 +01:00
]
);
2012-03-10 00:06:32 -03:00
2016-12-07 23:33:41 +01:00
$metadata -> addNamedNativeQuery (
[
2012-03-10 00:06:32 -03:00
'name' => 'fetchIdAndUsernameWithResultClass' ,
'query' => 'SELECT id, username FROM cms_users WHERE username = ?' ,
2016-12-08 18:01:04 +01:00
'resultClass' => CmsUser :: class ,
2016-12-07 23:33:41 +01:00
]
);
2012-03-10 00:06:32 -03:00
2016-12-07 23:33:41 +01:00
$metadata -> addNamedNativeQuery (
[
2012-03-10 00:06:32 -03:00
'name' => 'fetchAllColumns' ,
'query' => 'SELECT * FROM cms_users WHERE username = ?' ,
2016-12-08 18:01:04 +01:00
'resultClass' => CmsUser :: class ,
2016-12-07 23:33:41 +01:00
]
);
2012-03-10 00:06:32 -03:00
2016-12-07 23:33:41 +01:00
$metadata -> addNamedNativeQuery (
[
2012-03-10 00:06:32 -03:00
'name' => 'fetchJoinedAddress' ,
'query' => 'SELECT u.id, u.name, u.status, a.id AS a_id, a.country, a.zip, a.city FROM cms_users u INNER JOIN cms_addresses a ON u.id = a.user_id WHERE u.username = ?' ,
'resultSetMapping' => 'mappingJoinedAddress' ,
2016-12-07 23:33:41 +01:00
]
);
2012-03-10 00:06:32 -03:00
2016-12-07 23:33:41 +01:00
$metadata -> addNamedNativeQuery (
[
2012-03-10 00:06:32 -03:00
'name' => 'fetchJoinedPhonenumber' ,
'query' => 'SELECT id, name, status, phonenumber AS number FROM cms_users INNER JOIN cms_phonenumbers ON id = user_id WHERE username = ?' ,
'resultSetMapping' => 'mappingJoinedPhonenumber' ,
2016-12-07 23:33:41 +01:00
]
);
2012-03-10 00:06:32 -03:00
2016-12-07 23:33:41 +01:00
$metadata -> addNamedNativeQuery (
[
2012-03-10 00:06:32 -03:00
'name' => 'fetchUserPhonenumberCount' ,
'query' => 'SELECT id, name, status, COUNT(phonenumber) AS numphones FROM cms_users INNER JOIN cms_phonenumbers ON id = user_id WHERE username IN (?) GROUP BY id, name, status, username ORDER BY username' ,
'resultSetMapping' => 'mappingUserPhonenumberCount' ,
2016-12-07 23:33:41 +01:00
]
);
2012-03-10 00:06:32 -03:00
2016-12-07 23:33:41 +01:00
$metadata -> addNamedNativeQuery (
[
2012-03-11 12:10:15 -03:00
" name " => " fetchMultipleJoinsEntityResults " ,
" resultSetMapping " => " mappingMultipleJoinsEntityResults " ,
" query " => " SELECT u.id AS u_id, u.name AS u_name, u.status AS u_status, a.id AS a_id, a.zip AS a_zip, a.country AS a_country, COUNT(p.phonenumber) AS numphones FROM cms_users u INNER JOIN cms_addresses a ON u.id = a.user_id INNER JOIN cms_phonenumbers p ON u.id = p.user_id GROUP BY u.id, u.name, u.status, u.username, a.id, a.zip, a.country ORDER BY u.username "
2016-12-07 23:33:41 +01:00
]
);
2012-03-11 12:10:15 -03:00
2016-12-07 23:33:41 +01:00
$metadata -> addSqlResultSetMapping (
[
2012-03-10 00:06:32 -03:00
'name' => 'mappingJoinedAddress' ,
2016-12-07 23:33:41 +01:00
'columns' => [],
'entities' => [
[
'fields' => [
[
2012-03-10 00:06:32 -03:00
'name' => 'id' ,
'column' => 'id' ,
2016-12-07 23:33:41 +01:00
],
[
2012-03-10 00:06:32 -03:00
'name' => 'name' ,
'column' => 'name' ,
2016-12-07 23:33:41 +01:00
],
[
2012-03-10 00:06:32 -03:00
'name' => 'status' ,
'column' => 'status' ,
2016-12-07 23:33:41 +01:00
],
[
2012-03-10 00:06:32 -03:00
'name' => 'address.zip' ,
'column' => 'zip' ,
2016-12-07 23:33:41 +01:00
],
[
2012-03-10 00:06:32 -03:00
'name' => 'address.city' ,
'column' => 'city' ,
2016-12-07 23:33:41 +01:00
],
[
2012-03-10 00:06:32 -03:00
'name' => 'address.country' ,
'column' => 'country' ,
2016-12-07 23:33:41 +01:00
],
[
2012-03-10 00:06:32 -03:00
'name' => 'address.id' ,
'column' => 'a_id' ,
2016-12-07 23:33:41 +01:00
],
],
2016-12-08 18:01:04 +01:00
'entityClass' => CmsUser :: class ,
2012-03-10 00:06:32 -03:00
'discriminatorColumn' => null
2016-12-07 23:33:41 +01:00
],
],
]
);
2012-03-10 00:06:32 -03:00
2016-12-07 23:33:41 +01:00
$metadata -> addSqlResultSetMapping (
[
2012-03-10 00:06:32 -03:00
'name' => 'mappingJoinedPhonenumber' ,
2016-12-07 23:33:41 +01:00
'columns' => [],
'entities' => [
[
'fields' => [
[
2012-03-10 00:06:32 -03:00
'name' => 'id' ,
'column' => 'id' ,
2016-12-07 23:33:41 +01:00
],
[
2012-03-10 00:06:32 -03:00
'name' => 'name' ,
'column' => 'name' ,
2016-12-07 23:33:41 +01:00
],
[
2012-03-10 00:06:32 -03:00
'name' => 'status' ,
'column' => 'status' ,
2016-12-07 23:33:41 +01:00
],
[
2012-03-10 00:06:32 -03:00
'name' => 'phonenumbers.phonenumber' ,
'column' => 'number' ,
2016-12-07 23:33:41 +01:00
],
],
2016-12-08 18:01:04 +01:00
'entityClass' => CmsUser :: class ,
2012-03-10 00:06:32 -03:00
'discriminatorColumn' => null
2016-12-07 23:33:41 +01:00
],
],
]
);
2012-03-10 00:06:32 -03:00
2016-12-07 23:33:41 +01:00
$metadata -> addSqlResultSetMapping (
[
2012-03-10 00:06:32 -03:00
'name' => 'mappingUserPhonenumberCount' ,
2016-12-07 23:33:41 +01:00
'columns' => [],
'entities' => [
[
'fields' => [
[
2012-03-10 00:06:32 -03:00
'name' => 'id' ,
'column' => 'id' ,
2016-12-07 23:33:41 +01:00
],
[
2012-03-10 00:06:32 -03:00
'name' => 'name' ,
'column' => 'name' ,
2016-12-07 23:33:41 +01:00
],
[
2012-03-10 00:06:32 -03:00
'name' => 'status' ,
'column' => 'status' ,
2016-12-07 23:33:41 +01:00
]
],
2016-12-08 18:01:04 +01:00
'entityClass' => CmsUser :: class ,
2012-03-10 00:06:32 -03:00
'discriminatorColumn' => null
2016-12-07 23:33:41 +01:00
]
],
'columns' => [
[
2012-03-10 00:06:32 -03:00
'name' => 'numphones' ,
2016-12-07 23:33:41 +01:00
]
]
]
);
2012-03-11 12:10:15 -03:00
2016-12-07 23:33:41 +01:00
$metadata -> addSqlResultSetMapping (
[
2012-03-11 12:10:15 -03:00
'name' => 'mappingMultipleJoinsEntityResults' ,
2016-12-07 23:33:41 +01:00
'entities' => [
[
'fields' => [
[
2012-03-11 12:10:15 -03:00
'name' => 'id' ,
'column' => 'u_id' ,
2016-12-07 23:33:41 +01:00
],
[
2012-03-11 12:10:15 -03:00
'name' => 'name' ,
'column' => 'u_name' ,
2016-12-07 23:33:41 +01:00
],
[
2012-03-11 12:10:15 -03:00
'name' => 'status' ,
'column' => 'u_status' ,
2016-12-07 23:33:41 +01:00
]
],
2016-12-08 18:01:04 +01:00
'entityClass' => CmsUser :: class ,
2012-03-11 12:10:15 -03:00
'discriminatorColumn' => null ,
2016-12-07 23:33:41 +01:00
],
[
'fields' => [
[
2012-03-11 12:10:15 -03:00
'name' => 'id' ,
'column' => 'a_id' ,
2016-12-07 23:33:41 +01:00
],
[
2012-03-11 12:10:15 -03:00
'name' => 'zip' ,
'column' => 'a_zip' ,
2016-12-07 23:33:41 +01:00
],
[
2012-03-11 12:10:15 -03:00
'name' => 'country' ,
'column' => 'a_country' ,
2016-12-07 23:33:41 +01:00
],
],
2016-12-08 18:01:04 +01:00
'entityClass' => CmsAddress :: class ,
2012-03-11 12:10:15 -03:00
'discriminatorColumn' => null ,
2016-12-07 23:33:41 +01:00
],
],
'columns' => [
[
2012-03-11 12:10:15 -03:00
'name' => 'numphones' ,
2016-12-07 23:33:41 +01:00
]
]
]
);