如何在Laravel 7中使用外键更新数据库中的现有数据

我们吃

我有SQL数据库中的现有数据,我想更新这些数据以更新我正在创建的laravel项目中的成员资格。我想要一个user_id将我的users链接到我的money_trades的外键

money_trades表中的架构

Schema::create('money_trades', function (Blueprint $table) {
        $table->bigIncrements('id');
        $table->string('mt_number');
        $table->unsignedBigInteger('user_id');

        $table->string('bank');
        $table->string('email');
        $table->string('mt_first_name');
        $table->string('mt_last_name');
        $table->string('password');
        $table->string('mt_account');
        $table->integer('mt_deposit');
        $table->integer('mt_renewFee');
        $table->string('mt_leverage');
        $table->string('expiry_date');

        $table->foreign('user_id')->references('id')->on('users')->onDelete('cascade');

        $table->timestamps();
    });

MoneyTradeController.php store

public function store(Request $request)
{

    $request->validate([
        'bank' => ['required', 'string', 'max:255'],
        'email' => ['required', 'string', 'email', 'max:255'],
        'mt_first_name' => ['required', 'string', 'max:255'],
        'mt_last_name' => ['required', 'string', 'max:255'],
        'password' => ['required', 'string', 'min:8', 'confirmed'],
        'mt_account' => ['required', 'string', 'max:255'],
        'mt_deposit' => ['required', 'integer', 'max:1000000', 'min:500'],
        'mt_renewFee' => ['required', 'integer', 'max:1000000'],
        'mt_leverage' => ['required', 'string', 'max:255'],
        'expiry_date' => ['required', 'string', 'max:255'],


    ]);

    $moneyTrade = new MoneyTrade();
   
    $moneyTrade->mt_number = uniqid('MTNumber-');

    $moneyTrade->bank = $request->input('bank');
    $moneyTrade->email = $request->input('email');
    $moneyTrade->mt_first_name = $request->input('mt_first_name');
    $moneyTrade->mt_last_name = $request->input('mt_last_name');
    $moneyTrade->password = $request->input('password');
    $moneyTrade->mt_account = $request->input('mt_account');
    $moneyTrade->mt_deposit = $request->input('mt_deposit');
    $moneyTrade->mt_renewFee = $request->input('mt_renewFee');
    $moneyTrade->mt_leverage = $request->input('mt_leverage');
    $moneyTrade->expiry_date = $request->input('expiry_date');

    $moneyTrade->user_id = auth()->id();
   
    $moneyTrade->save();


    //send mail
    Mail::to($moneyTrade->user->email)->send(new MoneyTradeMail($moneyTrade));

    return redirect()->route('mt.view')->withMessage('MoneyTrade Account Created');
}

    }

MoneyTradeController.php update

public function update(Request $request, MoneyTrade $moneyTrade)
{
    dd($request);
    $request->validate([
        'bank' => ['required', 'string', 'max:255'],
        'mt_number' => ['required', 'string', 'max:255'],
        'email' => ['required', 'string', 'email', 'max:255'],
        'mt_first_name' => ['required', 'string', 'max:255'],
        'mt_last_name' => ['required', 'string', 'max:255'],
        'password' => ['required', 'string', 'min:8', 'confirmed'],
        'mt_account' => ['required', 'string', 'max:255'],
        'mt_deposit' => ['required', 'integer', 'max:1000000', 'min:500'],
        'mt_renewFee' => ['required', 'integer', 'max:1000000'],
        'mt_leverage' => ['required', 'string', 'max:255'],
        'expiry_date' => ['required', 'string', 'max:255'],


    ]);

    $moneyTrade->bank = $request->input('bank');
    $moneyTrade->mt_number = $request->input('mt_number');
    $moneyTrade->email = $request->input('email');
    $moneyTrade->mt_first_name = $request->input('mt_first_name');
    $moneyTrade->mt_last_name = $request->input('mt_last_name');
    $moneyTrade->password = $request->input('password');
    $moneyTrade->mt_account = $request->input('mt_account');
    $moneyTrade->mt_deposit = $request->input('mt_deposit');
    $moneyTrade->mt_renewFee = $request->input('mt_renewFee');
    $moneyTrade->mt_leverage = $request->input('mt_leverage');
    $moneyTrade->expiry_date = $request->input('expiry_date');

    $moneyTrade->user_id = auth()->id();

    $moneyTrade->save();

    return redirect()->route('mt.view')->withMessage('MoneyTrade Account Renewed');
}

当我倾倒dd($request)我得到这些在此处输入图片说明

与web.php相关的路由

Route::resource('moneytrade', 'MoneyTradeController')->middleware('auth');
Route::patch('/account-renew', 'MoneyTradeController@update')->name('mt.update')->middleware('auth');
Route::get('/trading-account', 'MoneyTradeController@view')->name('mt.view')->middleware('auth');
Route::get('/renew', 'MoneyTradeController@renew')->name('mt.renew')->middleware('auth');

当我尝试更新时,什么也没有发生,但是我没有遇到任何错误。update我的控制器中的功能代码缺少什么任何建议和帮助将不胜感激。谢谢。

扎希德·哈桑emon

首先,您的验证没有通过,这就是为什么您被重定向。现在,第二个问题是路由模型绑定。您的路线模型绑定无效。绑定对象是新对象,这就是为什么要在db中保存新条目。你的路线是

Route::resource('moneytrade', 'MoneyTradeController')->middleware('auth');
Route::patch('/account-renew/{moneytrade}', 'MoneyTradeController@update')->name('mt.update')->middleware('auth'); 

看看你的URI moneytrade是moneytrade,但在您的控制器要绑定的对象为moneyTrade地方T就是资本。在路由模型绑定中,Laravel期望uri段和绑定对象相同。否则,模型绑定将不起作用。如果您dd$moneyTrade对象是空的。因此,这里的解决方案是更改url或控制器对象。如果您改变路线,他们会像

Route::resource('money-trade', 'MoneyTradeController')->middleware('auth');
or
Route::resource('moneyTrade', 'MoneyTradeController')->middleware('auth');
Route::patch('/account-renew/{moneyTrade}', 'MoneyTradeController@update')->name('mt.update')->middleware('auth');

而且您不必更改控制器代码。如果要更改控制器而不是路由,则您的控制器将是

public function update(Request $request, MoneyTrade $moneytrade)
{
    dd($moneytrade);
}

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

如何使用nodejs在数据库中插入和更新现有数据?

来自分类Dev

在 Laravel 5.3 中使用现有数据库

来自分类Dev

如何使用随机生成的ID将现有数据更新到Firebase实时数据库中的数据

来自分类Dev

如何使用c#中的现有数据库创建新数据库?

来自分类Dev

如何在iOS中的sqlite数据库中检查现有数据

来自分类Dev

如何自动将外键添加到现有的Rails数据库中?

来自分类Dev

如何自动将外键添加到现有的Rails数据库中?

来自分类Dev

如何在Forecast.io中使用现有数据库

来自分类Dev

如何从现有数据库更新 Symfony 实体?

来自分类Dev

Laravel 5更新数据库中现有的

来自分类Dev

如何从Laravel中的现有数据库创建迁移

来自分类Dev

如何在Android Project中插入现有数据库

来自分类Dev

如何在现有数据库中创建ASP.Net Identity表?

来自分类Dev

如何在资产文件夹上的现有数据库中添加新列?

来自分类Dev

如何在Android中更新现有sqlite数据库中的数据

来自分类Dev

我正在使用Slugalicious宝石。如何为数据库中的现有数据创建块?

来自分类Dev

如何从数据库中的现有数据生成子弹字段-Doctrine Symfony2

来自分类Dev

如何从Worklight应用程序中使用sql / http适配器从现有数据库中检索图像

来自分类Dev

在Laravel 4中使用现有的MySQL数据库

来自分类Dev

如何使用另一个数据库中的变量在现有数据库中创建新的二进制列?

来自分类Dev

从Laravel中的现有数据库为存储过程,函数和事件创建迁移

来自分类Dev

从Laravel 4中的现有数据库创建迁移

来自分类Dev

如何使用linq更新SQL数据库中的现有项目?

来自分类Dev

如何在laravel 5.2中更新数据库表

来自分类Dev

如何使用php pdo从mysql中具有外键约束的数据库中删除数据

来自分类Dev

如何删除除postgres中的少数几个数据库外的所有数据库

来自分类Dev

如何从SQL Server 2008中的现有数据库创建XML架构

来自分类Dev

如何将EF核心安装到现有数据库中?

来自分类Dev

如何以代码优先方式在现有数据库表中添加列?

Related 相关文章

  1. 1

    如何使用nodejs在数据库中插入和更新现有数据?

  2. 2

    在 Laravel 5.3 中使用现有数据库

  3. 3

    如何使用随机生成的ID将现有数据更新到Firebase实时数据库中的数据

  4. 4

    如何使用c#中的现有数据库创建新数据库?

  5. 5

    如何在iOS中的sqlite数据库中检查现有数据

  6. 6

    如何自动将外键添加到现有的Rails数据库中?

  7. 7

    如何自动将外键添加到现有的Rails数据库中?

  8. 8

    如何在Forecast.io中使用现有数据库

  9. 9

    如何从现有数据库更新 Symfony 实体?

  10. 10

    Laravel 5更新数据库中现有的

  11. 11

    如何从Laravel中的现有数据库创建迁移

  12. 12

    如何在Android Project中插入现有数据库

  13. 13

    如何在现有数据库中创建ASP.Net Identity表?

  14. 14

    如何在资产文件夹上的现有数据库中添加新列?

  15. 15

    如何在Android中更新现有sqlite数据库中的数据

  16. 16

    我正在使用Slugalicious宝石。如何为数据库中的现有数据创建块?

  17. 17

    如何从数据库中的现有数据生成子弹字段-Doctrine Symfony2

  18. 18

    如何从Worklight应用程序中使用sql / http适配器从现有数据库中检索图像

  19. 19

    在Laravel 4中使用现有的MySQL数据库

  20. 20

    如何使用另一个数据库中的变量在现有数据库中创建新的二进制列?

  21. 21

    从Laravel中的现有数据库为存储过程,函数和事件创建迁移

  22. 22

    从Laravel 4中的现有数据库创建迁移

  23. 23

    如何使用linq更新SQL数据库中的现有项目?

  24. 24

    如何在laravel 5.2中更新数据库表

  25. 25

    如何使用php pdo从mysql中具有外键约束的数据库中删除数据

  26. 26

    如何删除除postgres中的少数几个数据库外的所有数据库

  27. 27

    如何从SQL Server 2008中的现有数据库创建XML架构

  28. 28

    如何将EF核心安装到现有数据库中?

  29. 29

    如何以代码优先方式在现有数据库表中添加列?

热门标签

归档