【问题标题】:Copy specific column from table to table将特定列从表复制到表
【发布时间】:2021-11-21 21:37:27
【问题描述】:

Table Student 中复制特定列,其中列 idnameaddressschoolagemajor 到表 A,但只有列 id , nameage

public function student()
{

    Transaksi::create([
        'id_' => $request->id,
        'name' => $request->name,
        'age' => $request->age
    ]);

}

但它不起作用。

有更好的建议

我正在使用 Laravel 8.6 和 MySql。

【问题讨论】:

  • 您是否将 $fillable 属性添加到您的 Transaksi 模型中?
  • @BiswajitBiswas nope 因为table A 是从表student 复制的。
  • 您正在执行批量分配,因此您必须对模型使用 $fillable 属性。 Laravel 不在乎你是否在复制。如果你在做批量作业,你应该使用 $fillable 属性。
  • 顺便说一句,你有什么例外吗?
  • @BiswajitBis 没关系,我明白了。所以我应该做些什么来改变不是$fillable

标签: php mysql laravel eloquent copy


【解决方案1】:
$student_column  = StudentModel::where('id', $specific_id)->get()[0];
$table_a_data = new TableAModel;
$table_a_data->student_id = $student_column->id;
$table_a_data->name = $student_column->name;
$table_a_data->age = $student_column->age;
$table_a_data->save();

请注意,您应该在迁移时引用表 A 上的 student_id,因此您应该查看表 A 的迁移文件并添加一个名为 student_id 的列,您可以按如下方式添加它

$table->unsignedBigInteger('student_id')->nullable();
        $table->foreign('student_id')->references('id')->on('students')->onDelete('cascade');

【讨论】:

  • 我在做迁移,所以必须回滚迁移?
  • 您可以这样做以重新迁移特定表以进行更改php artisan migrate:refresh --path=/database/migrations/Migration_File_Name.php
  • 我更喜欢使用string 来表示(student_id) 是否允许?
  • 不,它必须是 unsigned ,并引用到另一个表,但不要担心这是最佳实践
  • 是的,您必须填写姓名和年龄$fillable,但不要为表格设置密钥 ID $fillable
【解决方案2】:

批量分配是一个发送数据数组的过程,这些数据将被 一次保存到指定的模型。但它可能很脆弱。 $fillable 属性帮助我们保护我们想要的字段 实际上允许创建或更新。

在您的Transaksi.php 文件中添加:

protected $fillable = ['id', 'name', 'age'];

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-01-06
    • 1970-01-01
    • 1970-01-01
    • 2017-10-27
    • 1970-01-01
    相关资源
    最近更新 更多