I am working on Laravel models kind of thing, I am not able to understand how Laravel models use function chaining when the base model class is abstract. Please provide me some suitable explanation example. Thanks in advance.
Related
everyone:
I'm trying to create an application with several many to many relations, including a m-m rel onto the same model. It's a headache. In the official docs there is no so much information. I've been looking the code for belongsToMany method, in HasRelationShips.php, but there are not description on the parameters use.
Where can I get detailed documentation about the use of the parameters, in order to learn the right way to create any kind of relationships?
Do you know any book or document which details the working of all of the methods and parameters, so I can read it and REALLY learn how do they work?
Thanks everyone
Bro, in the DOCs you can find it easily.
Belongs to Many is like that:
public function companys(){
return $this->belongsToMany('App\Users', 'companys_users', 'user_id', 'company_id')->withTimestamps();
}
https://laravel.com/docs/5.7/eloquent-relationships#many-to-many
Is there a way to iterate over all models?
I have a strucure app/Models/{?ModelDir}/{Model}. I just need to check if controller for each model if it uses a trait.
Iterating through the models looks a nice solution for me but I am not sure how to achieve that.
I am looking for a way to add few custom methods which will be used in all models. I can imagine 3 ways of doing it :
Adding custom method to main Eloquent's Model.php class file(I want to avoid doing this as this is a core file)
Creating a custom model class with required custom methods, which will extend to eloquent's Model class and all the models in the project will extend to custom model class.
Adding a trait which will have my methods and include it inside all models
However, I want to do it more efficiently and best way possible. Is their any other way to do it?
PS I am using laravel 5.2 as its an old project.
Based on the comment discussion and adding my experience in Laravel I would suggest you to go either with #2 or #3 approach as #ceejayoz have specified in the comments
first one is definitely a bad approach as you need to modify the core which is not at all a good practice. Second and third are both good approaches.
But, before that you need to check your requirements if literally all models (including any future ones your app will ever have) need the extra functionality, however you can use traits for all models.
If I have the choice probably I will go for traits over custom models as traits are relatively simple then custom models
Can I use implements on a model in laravel and if so how can I define a attribute in the $fillable array, If I can't use it with a variable I can just have a interface with a method getBool()?
I have two models both with a attribute in the fillable array called bool i would like to have a function that operation on both of these models.
So how can I create a interface class that I can implement on the models?
I don't really understand your question maybe because of the lingo. However, interface is just a contract definition, it's not designed to add functionality per-se, just structure.
You could use a PHP traits to have shared code between models.
PHP Traits
I am currently in the process of learning Laravel 5 by doing a small project. I come from CodeIgniter and have some programming experience in other languages as well.
For this project I have a few Eloquent models setup;
Exercise -> has many variations
Variation -> belongs to exercise
User -> is creator of exercise and/or variation
I am using Larasponse and have written some transformers for each entity, as I want to create a flexible API.
To use 'eager' loading I have been playing around with Fractal and the 'ParseIncludes' function, and created a ApiController that handles this for you. For each controller that extends the ApiController you can set $IncludeOptions that relate to that specific resource, and passing that to a function to get eloquent eager loaded relations.
So far it works, but I was wondering if I am doing something really stupid or if there is a better/cleaner way to implement this into the ApiController and it's child-classes..
https://gist.github.com/EdwinMeijne/1fd103fbf8f903ce58bc
Care to take a look?