У меня есть 3 модели: пользователь, компания и филиал.
В блейд-файле я хочу иметь возможность отобразить филиал, к которому принадлежит компания пользователя.
На мой взгляд у меня должны быть следующие отношения:
Пользователь -> Компания: пользователь принадлежит компании, и у компании много пользователей, так что это отношение один ко многим.
Компания -> Филиал : Компания принадлежит филиалу, а филиал может иметь много компаний. Итак, еще раз отношение один ко многим.
У меня есть внешние ключи в таблице пользователей: company_id, которая ссылается на идентификатор в таблице компании. Еще один FK в таблице компании: branch_id, который ссылается на id в таблице филиалов.
В моем блейд-файле я хочу отобразить название ветви следующим образом: {{$ user-> company-> branch-> name}} где только имя является собственностью. Компания и филиал являются отношениями.
Мой запрос выглядит следующим образом:
$users = User::with(['company','company.branche' => function($q){
$q->select('name');
}])->inRandomOrder()->paginate(24);
<?php
namespace App;
use App\Events\GeneralEvent;
use Illuminate\Contracts\Auth\MustVerifyEmail;
use Illuminate\Database\Eloquent\SoftDeletes;
use Illuminate\Foundation\Auth\User as Authenticatable;
use Illuminate\Notifications\Notifiable;
use Nicolaslopezj\Searchable\SearchableTrait;
use Spatie\Permission\Traits\HasRoles;
class User extends Authenticatable implements MustVerifyEmail
{
use Notifiable, SoftDeletes, HasRoles, SearchableTrait;
/**
* The attributes that are mass assignable.
*
* @var array
*/
protected $fillable = [
'gender', 'first_name','last_name', 'email', 'password',
];
/**
* The attributes that should be hidden for arrays.
*
* @var array
*/
protected $hidden = [
'password', 'remember_token',
];
/**
* The attributes that should be cast to native types.
*
* @var array
*/
...
public function company()
{
return $this->belongsTo(Company::class,'company_id');
}
}
<?php
namespace App;
use App\Events\GeneralEvent;
use Illuminate\Database\Eloquent\Model;
use Illuminate\Database\Eloquent\SoftDeletes;
use Nicolaslopezj\Searchable\SearchableTrait;
class Company extends Model
{
use SoftDeletes, SearchableTrait;
...
public function branche()
{
return $this->belongsTo(Branche::class);
}
}
<?php
namespace App;
use Illuminate\Database\Eloquent\Model;
use Nicolaslopezj\Searchable\SearchableTrait;
class Branche extends Model
{
protected $fillable = [
'name'
];
protected $searchable = [
'columns' => [
'name' => 10,
],
];
public function companies()
{
return $this->hasMany(Company::class);
}
}
Однако, когда я выбрасываю $ user-> company, я получаю нулевое значение. Так что добавлять ветку после этого пока бессмысленно. Когда я сбрасываю пользователя, отношение появляется, но является нулевым. Я понятия не имею, где я иду не так. Может кто-нибудь помочь, пожалуйста?