Вариант 2: - Направление имеет несколько исполнителей, и исполнитель принадлежит нескольким направлениям. Тогда связь многие ко многим и промежуточная таблица нужна.
Но модель Execute_direction не нужна ни в одном из этих случаев
$executors = Executor::whereHas('directions', function($query) {
$query->where('id_user', auth()->user->id);
})
class User extends Model
{
/**
* The roles that belong to the user.
*/
public function roles()
{
return $this->belongsToMany('App\Role');
}
}
$roles = App\User::find(1)->roles()->orderBy('name')->get();
id
name
id_user
id
name
id_user
direction_id
execute_id
class Direction extends Model
{
protected $table = 'direction';
protected $fillable = ['id_user', 'name'];
public function executes()
{
return $this->hasManyThrough('App\Execute', 'App\Execute_direction');
}
}
class Execute_direction extends Model
{
protected $table = 'execute_direction';
protected $fillable = ['direction_id', 'execute_id'];
public $timestamps = false;
public function execute()
{
return $this->hasOne('App\Execute');
}
}
Auth::user()->executes
В моем случае$directions = Direction::where('id_user', Auth::user()->id)->executes()->get();
foreach ($directions as $value){
$execute[] = $value->name;
foreach (Direction::find($value->id)->executes()->get() as $item){
$execute[] = $item->name;
}
}
Допустим вот код
+ он выводит всех исполнителей в которые задействованы, но не фильтрует к моделе direcition
То есть получатеся вот так
А надо вот так
Надеюсь понятно объяснил. А по отношение у меня возникает вообще проблема и поэтому я использовал foreach чтобы настроить массив. С отношением я не пойму как это сделать