Have database queries inside eloquent ORM
up vote
0
down vote
favorite
Let me show you my eloquent ORM class:
<?php
namespace AppHttpModelsTransport_Type;
use IlluminateDatabaseEloquentModel;
use AppHttpModelsTransport_TypeTransportType;
class TransportType extends Model{
public $timestamps = false;
public function foo($language_id){
$transport_types = TransportType::join('translations', 'transport_types.name', '=', 'translations.id')
->join('translation_entries', 'translations.id', '=', 'translation_entries.translation_id')
->where('translation_entries.language_id', '=', $language_id)
->orderBy('parent_id')
->get(['transport_types.id', 'transport_types.parent_id', 'translation_entries.value']);
return $transport_types;
}
}
As you see I have foo function which I can call from many different controllers. so here is my question: Is it a good practice? or should I move that query logic to controller?
php laravel eloquent
add a comment |
up vote
0
down vote
favorite
Let me show you my eloquent ORM class:
<?php
namespace AppHttpModelsTransport_Type;
use IlluminateDatabaseEloquentModel;
use AppHttpModelsTransport_TypeTransportType;
class TransportType extends Model{
public $timestamps = false;
public function foo($language_id){
$transport_types = TransportType::join('translations', 'transport_types.name', '=', 'translations.id')
->join('translation_entries', 'translations.id', '=', 'translation_entries.translation_id')
->where('translation_entries.language_id', '=', $language_id)
->orderBy('parent_id')
->get(['transport_types.id', 'transport_types.parent_id', 'translation_entries.value']);
return $transport_types;
}
}
As you see I have foo function which I can call from many different controllers. so here is my question: Is it a good practice? or should I move that query logic to controller?
php laravel eloquent
I'm not sure if this is what you're looking for, but you might use a query scope instead of a regular function. These can have parameters passed as well. laravel.com/docs/master/eloquent#query-scopes
– GoogleMac
Nov 21 at 19:28
add a comment |
up vote
0
down vote
favorite
up vote
0
down vote
favorite
Let me show you my eloquent ORM class:
<?php
namespace AppHttpModelsTransport_Type;
use IlluminateDatabaseEloquentModel;
use AppHttpModelsTransport_TypeTransportType;
class TransportType extends Model{
public $timestamps = false;
public function foo($language_id){
$transport_types = TransportType::join('translations', 'transport_types.name', '=', 'translations.id')
->join('translation_entries', 'translations.id', '=', 'translation_entries.translation_id')
->where('translation_entries.language_id', '=', $language_id)
->orderBy('parent_id')
->get(['transport_types.id', 'transport_types.parent_id', 'translation_entries.value']);
return $transport_types;
}
}
As you see I have foo function which I can call from many different controllers. so here is my question: Is it a good practice? or should I move that query logic to controller?
php laravel eloquent
Let me show you my eloquent ORM class:
<?php
namespace AppHttpModelsTransport_Type;
use IlluminateDatabaseEloquentModel;
use AppHttpModelsTransport_TypeTransportType;
class TransportType extends Model{
public $timestamps = false;
public function foo($language_id){
$transport_types = TransportType::join('translations', 'transport_types.name', '=', 'translations.id')
->join('translation_entries', 'translations.id', '=', 'translation_entries.translation_id')
->where('translation_entries.language_id', '=', $language_id)
->orderBy('parent_id')
->get(['transport_types.id', 'transport_types.parent_id', 'translation_entries.value']);
return $transport_types;
}
}
As you see I have foo function which I can call from many different controllers. so here is my question: Is it a good practice? or should I move that query logic to controller?
php laravel eloquent
php laravel eloquent
edited Nov 23 at 14:15
tereško
52.1k1976135
52.1k1976135
asked Nov 21 at 19:26
Nika Khurashvili
62910
62910
I'm not sure if this is what you're looking for, but you might use a query scope instead of a regular function. These can have parameters passed as well. laravel.com/docs/master/eloquent#query-scopes
– GoogleMac
Nov 21 at 19:28
add a comment |
I'm not sure if this is what you're looking for, but you might use a query scope instead of a regular function. These can have parameters passed as well. laravel.com/docs/master/eloquent#query-scopes
– GoogleMac
Nov 21 at 19:28
I'm not sure if this is what you're looking for, but you might use a query scope instead of a regular function. These can have parameters passed as well. laravel.com/docs/master/eloquent#query-scopes
– GoogleMac
Nov 21 at 19:28
I'm not sure if this is what you're looking for, but you might use a query scope instead of a regular function. These can have parameters passed as well. laravel.com/docs/master/eloquent#query-scopes
– GoogleMac
Nov 21 at 19:28
add a comment |
1 Answer
1
active
oldest
votes
up vote
1
down vote
accepted
I prefer to keep my eloquent models and controllers as empty as possible, because of that I prefer to have repositories where I handle all my data access. See https://medium.com/employbl/use-the-repository-design-pattern-in-a-laravel-application-13f0b46a3dce for examples how to do this in Laravel.
Edit: I'm not sure of your approach is a bad of good practice. Just wanted to share my opinion maybe it helps :)!
so I can have TransportTypeRepository and that repository will have this foo function ?
– Nika Khurashvili
Nov 21 at 19:37
Yes, keep in mind that every repository only should have one source(model).
– Romano Schoonheim
Nov 21 at 19:42
so TransportTypeRepository->foo() and TransportTypeRepository->all() would be the way to go and not TransportType->all() and TransportType->foo();
– Nika Khurashvili
Nov 21 at 19:43
Yes! I'm not aware of the full context, but I usually do is this way because my code become more DRY and the testability improves.
– Romano Schoonheim
Nov 21 at 19:49
add a comment |
1 Answer
1
active
oldest
votes
1 Answer
1
active
oldest
votes
active
oldest
votes
active
oldest
votes
up vote
1
down vote
accepted
I prefer to keep my eloquent models and controllers as empty as possible, because of that I prefer to have repositories where I handle all my data access. See https://medium.com/employbl/use-the-repository-design-pattern-in-a-laravel-application-13f0b46a3dce for examples how to do this in Laravel.
Edit: I'm not sure of your approach is a bad of good practice. Just wanted to share my opinion maybe it helps :)!
so I can have TransportTypeRepository and that repository will have this foo function ?
– Nika Khurashvili
Nov 21 at 19:37
Yes, keep in mind that every repository only should have one source(model).
– Romano Schoonheim
Nov 21 at 19:42
so TransportTypeRepository->foo() and TransportTypeRepository->all() would be the way to go and not TransportType->all() and TransportType->foo();
– Nika Khurashvili
Nov 21 at 19:43
Yes! I'm not aware of the full context, but I usually do is this way because my code become more DRY and the testability improves.
– Romano Schoonheim
Nov 21 at 19:49
add a comment |
up vote
1
down vote
accepted
I prefer to keep my eloquent models and controllers as empty as possible, because of that I prefer to have repositories where I handle all my data access. See https://medium.com/employbl/use-the-repository-design-pattern-in-a-laravel-application-13f0b46a3dce for examples how to do this in Laravel.
Edit: I'm not sure of your approach is a bad of good practice. Just wanted to share my opinion maybe it helps :)!
so I can have TransportTypeRepository and that repository will have this foo function ?
– Nika Khurashvili
Nov 21 at 19:37
Yes, keep in mind that every repository only should have one source(model).
– Romano Schoonheim
Nov 21 at 19:42
so TransportTypeRepository->foo() and TransportTypeRepository->all() would be the way to go and not TransportType->all() and TransportType->foo();
– Nika Khurashvili
Nov 21 at 19:43
Yes! I'm not aware of the full context, but I usually do is this way because my code become more DRY and the testability improves.
– Romano Schoonheim
Nov 21 at 19:49
add a comment |
up vote
1
down vote
accepted
up vote
1
down vote
accepted
I prefer to keep my eloquent models and controllers as empty as possible, because of that I prefer to have repositories where I handle all my data access. See https://medium.com/employbl/use-the-repository-design-pattern-in-a-laravel-application-13f0b46a3dce for examples how to do this in Laravel.
Edit: I'm not sure of your approach is a bad of good practice. Just wanted to share my opinion maybe it helps :)!
I prefer to keep my eloquent models and controllers as empty as possible, because of that I prefer to have repositories where I handle all my data access. See https://medium.com/employbl/use-the-repository-design-pattern-in-a-laravel-application-13f0b46a3dce for examples how to do this in Laravel.
Edit: I'm not sure of your approach is a bad of good practice. Just wanted to share my opinion maybe it helps :)!
answered Nov 21 at 19:33
Romano Schoonheim
518
518
so I can have TransportTypeRepository and that repository will have this foo function ?
– Nika Khurashvili
Nov 21 at 19:37
Yes, keep in mind that every repository only should have one source(model).
– Romano Schoonheim
Nov 21 at 19:42
so TransportTypeRepository->foo() and TransportTypeRepository->all() would be the way to go and not TransportType->all() and TransportType->foo();
– Nika Khurashvili
Nov 21 at 19:43
Yes! I'm not aware of the full context, but I usually do is this way because my code become more DRY and the testability improves.
– Romano Schoonheim
Nov 21 at 19:49
add a comment |
so I can have TransportTypeRepository and that repository will have this foo function ?
– Nika Khurashvili
Nov 21 at 19:37
Yes, keep in mind that every repository only should have one source(model).
– Romano Schoonheim
Nov 21 at 19:42
so TransportTypeRepository->foo() and TransportTypeRepository->all() would be the way to go and not TransportType->all() and TransportType->foo();
– Nika Khurashvili
Nov 21 at 19:43
Yes! I'm not aware of the full context, but I usually do is this way because my code become more DRY and the testability improves.
– Romano Schoonheim
Nov 21 at 19:49
so I can have TransportTypeRepository and that repository will have this foo function ?
– Nika Khurashvili
Nov 21 at 19:37
so I can have TransportTypeRepository and that repository will have this foo function ?
– Nika Khurashvili
Nov 21 at 19:37
Yes, keep in mind that every repository only should have one source(model).
– Romano Schoonheim
Nov 21 at 19:42
Yes, keep in mind that every repository only should have one source(model).
– Romano Schoonheim
Nov 21 at 19:42
so TransportTypeRepository->foo() and TransportTypeRepository->all() would be the way to go and not TransportType->all() and TransportType->foo();
– Nika Khurashvili
Nov 21 at 19:43
so TransportTypeRepository->foo() and TransportTypeRepository->all() would be the way to go and not TransportType->all() and TransportType->foo();
– Nika Khurashvili
Nov 21 at 19:43
Yes! I'm not aware of the full context, but I usually do is this way because my code become more DRY and the testability improves.
– Romano Schoonheim
Nov 21 at 19:49
Yes! I'm not aware of the full context, but I usually do is this way because my code become more DRY and the testability improves.
– Romano Schoonheim
Nov 21 at 19:49
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.
Some of your past answers have not been well-received, and you're in danger of being blocked from answering.
Please pay close attention to the following guidance:
- 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%2f53419246%2fhave-database-queries-inside-eloquent-orm%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
I'm not sure if this is what you're looking for, but you might use a query scope instead of a regular function. These can have parameters passed as well. laravel.com/docs/master/eloquent#query-scopes
– GoogleMac
Nov 21 at 19:28