v
Relation: https://github.com/laravel/framework/blob/8.x/src/Illuminate/Database/Eloquent/Concerns/HasRelationships.php#L70-L87
Object: https://github.com/laravel/framework/blob/2ecc0b484aaf5aa356f799f629dde7242e56084f/src/Illuminate/Database/Eloquent/Relations/HasOne.php
belongsTo:
Relation: https://github.com/laravel/framework/blob/8.x/src/Illuminate/Database/Eloquent/Concerns/HasRelationships.php#L184-L219
Object: https://github.com/laravel/framework/blob/2ecc0b484aaf5aa356f799f629dde7242e56084f/src/Illuminate/Database/Eloquent/Relations/BelongsTo.php
На практике часто сталкиваюсь с тем, что релейшен belongsTo, даже с явно указанными именами колонок, не получает запись из базы при том, что hasOne срабатывает.
Из последнего: есть две модели: Package и Activity. Вторая содержит колонку
package_id
.Из модели Activity нужно получить инстанс Package. Скажешь "укажи
$this->belongsTo(Package::class)
"? А вот нет - всегда вернётся null
. Чтобы сработала связь, нужно указать $this->hasOne(Package::class, 'id', 'package_id');
App\Models\Profile:
```
public function user()
{
return $this->belongsTo(User::class);
}
```Через tinker:
>>> App\Models\Profile::first()->user
=> App\Models\User {#4488
id: 1,
phone: '+79999999999'
}
>>> App\Models\Profile::with('user')->first()->user
=> App\Models\User {#4554
id: 1,
phone: '+79999999999'
}
>>>