Laravel, related model reuturened names
I have a model that has a related model
class A extends Model{
public function niceName()
{
return this->hasOne('AppNiceName2' ...);
}
In the controller when I retrieve data with submodel the result is like
a[nice_name_2] (using the table name) and I would like it to be a[NiceName2].
Is there a way to have an alias for the returned result? In cakePHP i know there is propertyName to set this on relations. Laravel has a similar feature?
Thanks
laravel model alias relation
add a comment |
I have a model that has a related model
class A extends Model{
public function niceName()
{
return this->hasOne('AppNiceName2' ...);
}
In the controller when I retrieve data with submodel the result is like
a[nice_name_2] (using the table name) and I would like it to be a[NiceName2].
Is there a way to have an alias for the returned result? In cakePHP i know there is propertyName to set this on relations. Laravel has a similar feature?
Thanks
laravel model alias relation
Not sure what you're saying. If you getA
like$a = A::with(["niceName"])->first();
, then you should be accessing sub-model like$niceName = $a->niceName;
. Include all code necessary to recreate.
– Tim Lewis
Nov 15 '18 at 18:32
i convert it toArray (not accessing it as objects) and then the array name is table_full_name instead of ModelName.
– Vlad Agri
Nov 15 '18 at 18:40
Ah, you didn't mention that in your question, but yes, as Devon has said, serializing (converting to array/json/etc) will convert to snake_case.
– Tim Lewis
Nov 15 '18 at 18:48
add a comment |
I have a model that has a related model
class A extends Model{
public function niceName()
{
return this->hasOne('AppNiceName2' ...);
}
In the controller when I retrieve data with submodel the result is like
a[nice_name_2] (using the table name) and I would like it to be a[NiceName2].
Is there a way to have an alias for the returned result? In cakePHP i know there is propertyName to set this on relations. Laravel has a similar feature?
Thanks
laravel model alias relation
I have a model that has a related model
class A extends Model{
public function niceName()
{
return this->hasOne('AppNiceName2' ...);
}
In the controller when I retrieve data with submodel the result is like
a[nice_name_2] (using the table name) and I would like it to be a[NiceName2].
Is there a way to have an alias for the returned result? In cakePHP i know there is propertyName to set this on relations. Laravel has a similar feature?
Thanks
laravel model alias relation
laravel model alias relation
edited Nov 15 '18 at 18:16
Vlad Agri
asked Nov 15 '18 at 18:01
Vlad AgriVlad Agri
1715
1715
Not sure what you're saying. If you getA
like$a = A::with(["niceName"])->first();
, then you should be accessing sub-model like$niceName = $a->niceName;
. Include all code necessary to recreate.
– Tim Lewis
Nov 15 '18 at 18:32
i convert it toArray (not accessing it as objects) and then the array name is table_full_name instead of ModelName.
– Vlad Agri
Nov 15 '18 at 18:40
Ah, you didn't mention that in your question, but yes, as Devon has said, serializing (converting to array/json/etc) will convert to snake_case.
– Tim Lewis
Nov 15 '18 at 18:48
add a comment |
Not sure what you're saying. If you getA
like$a = A::with(["niceName"])->first();
, then you should be accessing sub-model like$niceName = $a->niceName;
. Include all code necessary to recreate.
– Tim Lewis
Nov 15 '18 at 18:32
i convert it toArray (not accessing it as objects) and then the array name is table_full_name instead of ModelName.
– Vlad Agri
Nov 15 '18 at 18:40
Ah, you didn't mention that in your question, but yes, as Devon has said, serializing (converting to array/json/etc) will convert to snake_case.
– Tim Lewis
Nov 15 '18 at 18:48
Not sure what you're saying. If you get
A
like $a = A::with(["niceName"])->first();
, then you should be accessing sub-model like $niceName = $a->niceName;
. Include all code necessary to recreate.– Tim Lewis
Nov 15 '18 at 18:32
Not sure what you're saying. If you get
A
like $a = A::with(["niceName"])->first();
, then you should be accessing sub-model like $niceName = $a->niceName;
. Include all code necessary to recreate.– Tim Lewis
Nov 15 '18 at 18:32
i convert it toArray (not accessing it as objects) and then the array name is table_full_name instead of ModelName.
– Vlad Agri
Nov 15 '18 at 18:40
i convert it toArray (not accessing it as objects) and then the array name is table_full_name instead of ModelName.
– Vlad Agri
Nov 15 '18 at 18:40
Ah, you didn't mention that in your question, but yes, as Devon has said, serializing (converting to array/json/etc) will convert to snake_case.
– Tim Lewis
Nov 15 '18 at 18:48
Ah, you didn't mention that in your question, but yes, as Devon has said, serializing (converting to array/json/etc) will convert to snake_case.
– Tim Lewis
Nov 15 '18 at 18:48
add a comment |
1 Answer
1
active
oldest
votes
Laravel uses the convention of camelCase for method names and snake_case for attributes. I'm not sure there's an easy way around this.
When Laravel serializes the data, it converts relationships to snake_case, by convention. So NiceName2
would become nice_name2
when you execute toArray()
or when the model is serialized (either in a JSON response or otherwise).
How this works is:
When you access $model->nice_name2
it converts the property name back to niceName2
to check for a relationship method with that name. When serializing, it converts the relationship niceName2
to the attribute name nice_name2
.
now it's clear to me why this is happening. Thanks for the answer
– Vlad Agri
Nov 15 '18 at 18:47
I updated the answer to hopefully make it a bit more clear.
– Devon
Nov 15 '18 at 18:48
add a comment |
Your Answer
StackExchange.ifUsing("editor", function () {
StackExchange.using("externalEditor", function () {
StackExchange.using("snippets", function () {
StackExchange.snippets.init();
});
});
}, "code-snippets");
StackExchange.ready(function() {
var channelOptions = {
tags: "".split(" "),
id: "1"
};
initTagRenderer("".split(" "), "".split(" "), channelOptions);
StackExchange.using("externalEditor", function() {
// Have to fire editor after snippets, if snippets enabled
if (StackExchange.settings.snippets.snippetsEnabled) {
StackExchange.using("snippets", function() {
createEditor();
});
}
else {
createEditor();
}
});
function createEditor() {
StackExchange.prepareEditor({
heartbeatType: 'answer',
autoActivateHeartbeat: false,
convertImagesToLinks: true,
noModals: true,
showLowRepImageUploadWarning: true,
reputationToPostImages: 10,
bindNavPrevention: true,
postfix: "",
imageUploader: {
brandingHtml: "Powered by u003ca class="icon-imgur-white" href="https://imgur.com/"u003eu003c/au003e",
contentPolicyHtml: "User contributions licensed under u003ca href="https://creativecommons.org/licenses/by-sa/3.0/"u003ecc by-sa 3.0 with attribution requiredu003c/au003e u003ca href="https://stackoverflow.com/legal/content-policy"u003e(content policy)u003c/au003e",
allowUrls: true
},
onDemand: true,
discardSelector: ".discard-answer"
,immediatelyShowMarkdownHelp:true
});
}
});
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
StackExchange.ready(
function () {
StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2fstackoverflow.com%2fquestions%2f53325411%2flaravel-related-model-reuturened-names%23new-answer', 'question_page');
}
);
Post as a guest
Required, but never shown
1 Answer
1
active
oldest
votes
1 Answer
1
active
oldest
votes
active
oldest
votes
active
oldest
votes
Laravel uses the convention of camelCase for method names and snake_case for attributes. I'm not sure there's an easy way around this.
When Laravel serializes the data, it converts relationships to snake_case, by convention. So NiceName2
would become nice_name2
when you execute toArray()
or when the model is serialized (either in a JSON response or otherwise).
How this works is:
When you access $model->nice_name2
it converts the property name back to niceName2
to check for a relationship method with that name. When serializing, it converts the relationship niceName2
to the attribute name nice_name2
.
now it's clear to me why this is happening. Thanks for the answer
– Vlad Agri
Nov 15 '18 at 18:47
I updated the answer to hopefully make it a bit more clear.
– Devon
Nov 15 '18 at 18:48
add a comment |
Laravel uses the convention of camelCase for method names and snake_case for attributes. I'm not sure there's an easy way around this.
When Laravel serializes the data, it converts relationships to snake_case, by convention. So NiceName2
would become nice_name2
when you execute toArray()
or when the model is serialized (either in a JSON response or otherwise).
How this works is:
When you access $model->nice_name2
it converts the property name back to niceName2
to check for a relationship method with that name. When serializing, it converts the relationship niceName2
to the attribute name nice_name2
.
now it's clear to me why this is happening. Thanks for the answer
– Vlad Agri
Nov 15 '18 at 18:47
I updated the answer to hopefully make it a bit more clear.
– Devon
Nov 15 '18 at 18:48
add a comment |
Laravel uses the convention of camelCase for method names and snake_case for attributes. I'm not sure there's an easy way around this.
When Laravel serializes the data, it converts relationships to snake_case, by convention. So NiceName2
would become nice_name2
when you execute toArray()
or when the model is serialized (either in a JSON response or otherwise).
How this works is:
When you access $model->nice_name2
it converts the property name back to niceName2
to check for a relationship method with that name. When serializing, it converts the relationship niceName2
to the attribute name nice_name2
.
Laravel uses the convention of camelCase for method names and snake_case for attributes. I'm not sure there's an easy way around this.
When Laravel serializes the data, it converts relationships to snake_case, by convention. So NiceName2
would become nice_name2
when you execute toArray()
or when the model is serialized (either in a JSON response or otherwise).
How this works is:
When you access $model->nice_name2
it converts the property name back to niceName2
to check for a relationship method with that name. When serializing, it converts the relationship niceName2
to the attribute name nice_name2
.
edited Nov 15 '18 at 18:48
answered Nov 15 '18 at 18:38
DevonDevon
23.4k42747
23.4k42747
now it's clear to me why this is happening. Thanks for the answer
– Vlad Agri
Nov 15 '18 at 18:47
I updated the answer to hopefully make it a bit more clear.
– Devon
Nov 15 '18 at 18:48
add a comment |
now it's clear to me why this is happening. Thanks for the answer
– Vlad Agri
Nov 15 '18 at 18:47
I updated the answer to hopefully make it a bit more clear.
– Devon
Nov 15 '18 at 18:48
now it's clear to me why this is happening. Thanks for the answer
– Vlad Agri
Nov 15 '18 at 18:47
now it's clear to me why this is happening. Thanks for the answer
– Vlad Agri
Nov 15 '18 at 18:47
I updated the answer to hopefully make it a bit more clear.
– Devon
Nov 15 '18 at 18:48
I updated the answer to hopefully make it a bit more clear.
– Devon
Nov 15 '18 at 18:48
add a comment |
Thanks for contributing an answer to Stack Overflow!
- Please be sure to answer the question. Provide details and share your research!
But avoid …
- Asking for help, clarification, or responding to other answers.
- Making statements based on opinion; back them up with references or personal experience.
To learn more, see our tips on writing great answers.
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
StackExchange.ready(
function () {
StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2fstackoverflow.com%2fquestions%2f53325411%2flaravel-related-model-reuturened-names%23new-answer', 'question_page');
}
);
Post as a guest
Required, but never shown
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Not sure what you're saying. If you get
A
like$a = A::with(["niceName"])->first();
, then you should be accessing sub-model like$niceName = $a->niceName;
. Include all code necessary to recreate.– Tim Lewis
Nov 15 '18 at 18:32
i convert it toArray (not accessing it as objects) and then the array name is table_full_name instead of ModelName.
– Vlad Agri
Nov 15 '18 at 18:40
Ah, you didn't mention that in your question, but yes, as Devon has said, serializing (converting to array/json/etc) will convert to snake_case.
– Tim Lewis
Nov 15 '18 at 18:48