@serkah

Задача по связям многие ко многим типу пользователи и роли / как добавить пользователя с привязкой если текущий обьект User а мой ebploee?

Задание было следующее -
1. Развернуть фреймворк Laravel (минимум 8 версия)
2. Сделать сущности (таблицы): Пользователь, Отдел, Должность
Пользователь может быть в нескольких отделах, но при этом иметь только одну должность (использовать связи)
3. Должна быть возможность добавлять, удалять, изменять.
4. Для пользователя должна быть возможность загружать фото
5. Выводить данные в виде таблицы, можно использовать готовые css фреймворки, например Bootstrap, Uikit, TailWind
6. Сделать распределение прав пользователей. Админ, Менеджер, Юзер.
Админ - имеет все права
Менеджер - может изменять данные, добавлять данные, но не может удалять записи
Юзер - может только просматривать данные
7. Формат даты дд.мм.гггг
8. Ход работ отображать коммитами в системе контроля версий git.
9. Для демонстрации результата работы использовать один из популярных репозиториев GitHub, BitBucket или др.

60afeabc7a17d125028928.png

что было сделано -
1 достал функционал из коробки авторизацию регистрацию востановление
2 ддобавил миграции с связями
3 добавил модели с привязками -
<?php

namespace App\Models;

use Illuminate\Database\Eloquent\Factories\HasFactory;
use Illuminate\Database\Eloquent\Model;

class Emploee extends Model
{
    use HasFactory;

    protected $fillable = [
        'department',
        'position',
    ];
    /**
     * Таблица, связанная с моделью.
     *
     * @var string
     */
    protected $table = 'users';

    public function departments()
    {
        return $this->belongsToMany('App\Models\Department');
    }
}


<?php

namespace App\Models;

use Illuminate\Database\Eloquent\Factories\HasFactory;
use Illuminate\Database\Eloquent\Model;

class Department extends Model
{
    use HasFactory;

    /**
     * Таблица, связанная с моделью.
     *
     * @var string
     */
    protected $table = 'department_list';

    public function users()
    {
        return $this->belongsToMany('App\Models\Emploee');
    }
}


4 сделал шабллоны и еще куча всего
остановился на задаче добавление пользователя и тут встрял

сделал я для удаления редактирования и добавления общий контроллер
вроде пользователь добавляется
после добавления я хотел вызвать метод attach
но для того чтобы сделать привязку - мне нужен не пустой обьект Emploee с методом department

вот код который мне выдает - method department is undefined

public function addNewUser(Request $request){
        $user = User::create([
            'name' => $request['name'],
            'email' => $request['email'],
            'statusUser' => $request['statusUser'],
            'password' => Hash::make($request['password']),
        ]);


        $department = Department::find([(int) $request['department']]); // Modren Chairs, Home Chairs

        $user->emploee()->departments()->attach($department);//с этой строчкой беда

        return redirect('/users');
    }


перед тем как прописать эту строку я добавил в модель User след код по совету знакомого

public function emploee()
    {

        return $this->hasMany('App\Models\Emploee');
    }


во первых в данном варианте прошу обьяснить - я запутался -какая тут будет связь и как вообще я устанавливаю связь
от модели юзер к модели Emploee в которой опять тактаки текущая модель users )у меня было четкое понимание что у каждой таблицы своя модель и от одной модели я могу сделать свзяь к другой ) а тут я обращаюсьь от модели к модели

и второе

$user->emploee()->departments()-

в этой строке на мой взгляд вызван метод emploee в котором был возрвращен метод departments

прошу рассказать что не так / как починить / и разобрать мою кашу в голове

костыли не предлагать - по типу
$test = Emploee::find($id);
$test->departments()-
  • Вопрос задан
  • 111 просмотров
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы