One-to-one releationship

При выводе через json, родительского модель, дочерняя модель выводится как null. Дочерняя модель создаётся в базе и при попытке получить через hasOne() возвращается без проблем.

class Teacher extends Model
{
    use HasFactory;

    protected $table = "user_teachers";

    public function user(): BelongsTo
    {
        return $this->belongsTo(User::class);
    }
}

class User extends Authenticatable
{
    use HasApiTokens, HasFactory, Notifiable;

    /**
     * The attributes that are mass assignable.
     *
     * @var array<int, string>
     */
    protected $fillable = [
        'name',
        'surname',
        'login',
        'email',
        'password',
    ];

    /**
     * The attributes that should be hidden for serialization.
     *
     * @var array<int, string>
     */
    protected $hidden = [
        'password',
        'email_verified_at',
        'created_at',
        'updated_at',
        'remember_token',
    ];

    /**
     * The attributes that should be cast.
     *
     * @var array<string, string>
     */
    protected $casts = [
        'email_verified_at' => 'datetime',
    ];

    public function student(): HasOne
    {
        return $this->hasOne(Student::class);
    }

    public function teacher(): HasOne
    {
        return $this->hasOne(Teacher::class);
    }
}

Контроллер:

$fields = $request->validate([
                'name' => 'required|string',
                'surname' => 'required|string',
                'email' => 'required|string|unique:users,email',
                'username' => 'required|string|unique:users,login',
                'password' => 'min:6|required|string|confirmed'
            ]);

            $user = User::create([
                'name' => mb_ucfirst($fields['name']),
                'surname' => mb_ucfirst($fields['surname']),
                'email' => strtolower($fields['email']),
                'login' => $fields['username'],
                'password' => bcrypt($fields['password'])
            ]);

            $this->createByType($request, $user);

            $token = $user->createToken(env("APP_KEY"))->plainTextToken;

            $response = [
                'user' => $user,
                'token' => $token
            ];

введите сюда описание изображения

Версия Laravel: 9


Ответы (0 шт):