Dynamic Relationships
if we want to define a “one-to-one” relationship between Post and User model where the Post belongs to the User
, you can define it like so.
To learn about one to one relationship in laravel visit our Bajarangisoft site
<?php
namespace App;
use Illuminate\Database\Eloquent\Model;
class Post extends Model
{
public function user()
{
return $this->belongsTo('App\User');
}
}
Here, the Eloquent will try to match the user_id from the Post model to an id on the User model and based on that will fetch the records.
This is one way to define relationships. But there’s another way in Eloquent using which you can define relationships on-the-fly outside of the models. Enter resolveRelationUsing method.
resolveRelationUsing method which can be used to define relations between Eloquent models outside of model like so.
You may use the resolveRelationUsing
method to define relations between Eloquent models at runtime. While not typically recommended for normal application development, this may occasionally be useful when developing Laravel packages:
use App\Post;
use App\User;
Post::resolveRelationUsing('User', function ($postModel) {
return $postModel->belongsTo(Customer::class, 'user_id');
});
When defining dynamic relationships, always provide explicit key name arguments to the Eloquent relationship methods.