当类扩展另一个类时,如何在Laravel中使用存储控制器方法?

kupeojn6  于 2022-12-24  发布在  其他
关注(0)|答案(1)|浏览(98)

我有一个类User,它包含变量name,surname,email ......还有类Student和Teacher,它们扩展了User。
我想创建学生(创建,使他在数据库中):

<form method="post" action="{{ route('students.store') }}">
@csrf
        <div>
            <x-input-label for="name" :value="__('Name of student')" />
            <x-text-input id="name" type="text" name="name" :value="old('name')" autofocus />
            <x-input-error :messages="$errors->get('name')" class="mt-2" />
        </div>

        ...

        <x-primary-button>
             {{ __('Create') }}
        </x-primary-button>
</form>

但问题是,Student类中没有name、surname ...变量,它们在User类中。Laravel试图将所有内容放入SQL表students中。(错误:数据库状态[42S22]:未找到列:1054 "字段列表"中的列"名称"未知)
我需要做什么?如何创建类的对象,继承自Laravel中的其他类?也许扩展数据库中的学生表,使其具有这些变量?
edit:学生类可以有如下变量:阶级频率。

soat7uwm

soat7uwm1#

如果您的Student类扩展了User类,则需要指定Student类正在使用的表,否则,Laravel必须根据模型名称猜测表名。

protected $table = 'users';

https://laravel.com/docs/9.x/eloquent#table-names
编辑
假设您有一个用户表,如下所示:
| 身份证|姓名|姓|是_学生|
| - ------| - ------| - ------| - ------|
| 1个|约翰|母鹿|无|
| 第二章|简|铁匠|1个|
和类表:
| 身份证|类|房间|
| - ------| - ------| - ------|
| 1个|几何形状|A类|
| 第二章|物理学|乙|
您可以通过透视表(classes_users)将它们连接起来,以存储其他特定于学生的数据:
| 学生标识|类标识|
| - ------| - ------|
| 第二章|1个|
| 三个|1个|
| 四个|第二章|

相关问题