保存两个字段同名关系一对一背包laravel

save both field same name relationship one to one backpack laravel

我有两个 table 具有一对一的关系 hasOne 并且具有相同的列名称

    CRUD::addField([
        'label'     => "Title",
        'type'      => 'text',
        'name'      => 'new_title', // the db column for the foreign key
    ]);
    CRUD::addField([
        'label'     => "Title",
        'type'      => 'text',
        'name'      => 'achive.new_title', // the db column for the foreign key
        'entity'    => 'achive',
    ]);

我只想显示一次,但要同时保存两次 table

您需要调用回调方法的东西,该方法的简单之处在于您可以在 createeditdeleteetc 之后控制您想要的内容.

因此,在您的控制器中只需要一个字段名称,

CRUD::addField([
    'label'     => "Title",
    'type'      => 'text',
    'name'      => 'new_title',
]);

之后,您可以在控制器中为 creating/updating 您的关系创建一个新特征,

use \Backpack\CRUD\app\Http\Controllers\Operations\CreateOperation { store as traitStore; }

然后,声明存储函数,

public function store() {

    // Get the value from the request
    $request = $this->crud->getRequest();

    // And then you can insert/update data into your relationship table
    \DB::table('achives') // Your relation table
        ->updateOrInsert(
            ['new_title' => $request->new_title], 
            ['other_column_name' => 'Value of your other column']
        );

    $response = $this->traitStore();
    // do something after save
    return $response;
}

updateOrInsert 方法接受两个参数:查找记录所依据的条件数组,以及指示要更新的列的列和值对数组。 more info here