【发布时间】:2020-10-06 04:23:12
【问题描述】:
在我的 laravel 项目中,我创建了三个表,分别为 employees、teams 和 employee_teams。 “employee_teams”表中存在多对多关系,外键为employee_id 和team_id。
“employee_teams”表数据库结构
标识 |员工编号 | team_id
在员工表单中有一个多选下拉菜单,可帮助为特定员工分配多个团队。
<select name="namedropdown[]" id="namedropdown" class="selectpicker" multiple data-live-search="true">
<option value="" disabled selected>Nothing selected</option>
@foreach ($tdropdown as $key => $tdrop)
<option value="{{$key}}">{{$tdrop}}</option>
@endforeach
</select>
我想要将“team_id”和“employee_id”保存到“employee_teams”表中。
这是员工模型
class employee extends Model
{
public function teams()
{
return $this->belongsToMany(team::class, 'employee_teams');
}
}
这是团队模型
class team extends Model
{
public function employees()
{
return $this->belongsToMany(employee::class, 'employee_teams');
}
}
这里是employee_team表迁移
class CreateEmployeeTeamsTable extends Migration
{
public function up()
{
Schema::create('employee_teams', function (Blueprint $table) {
$table->increments('id');
$table->integer('employee_id')->unsigned();
$table->integer('team_id')->unsigned();
$table->foreign('employee_id')->references('id')->on('employees')->onDelete('cascade');
$table->foreign('team_id')->references('id')->on('teams')->onDelete('cascade');
$table->timestamps();
});
}
这是员工控制器中的存储功能
use App\employee;
use App\team;
use App\employee_team;
// codes
$employee = new employee();
$employee->namedropdown = implode(',', $request->input('namedropdown')); //Already save multi-select dropdown ids to the database
$employee->save();
$employee_team = new employee_team();
$employee->teams()->attach($employee->namedropdown);
return redirect()->route('employee.index')->with('success','Data Added');
}
错误来自SQLSTATE[01000]: Warning: 1265 Data truncated for column 'team_id' at row 1
请帮我将employee_id 和team_id 保存到“employee_teams”表中。非常感谢。
【问题讨论】:
-
你的模型看起来不错。你能分享你的迁移吗?我认为有一个数据库问题。 (您不需要
$employee_team = new employee_team()行) -
好的,我添加了“employee_team_table”迁移。好的,我将其删除。帮我将employee_id 和team_id 保存到“employee_teams”表中。
-
您可以查看我上面的答案并重建您的代码。
标签: laravel relationship multi-select