Обновить записи таблицы базы данных: Laravel - PullRequest
0 голосов
/ 18 октября 2018

Мне нужно обновить таблицу базы данных в соответствии с отредактированными данными.

контроллер

public function update(Request $request)
{
    $subscriptionplan = SubscriptionPlan::find($request->id);
    $subscriptionplan->update($request->all());        
    return back();        
}

Но ничего не происходит, когда я отправляю форму.Когда я использую dd($request->all()); в начале функции, она корректно отображает отредактированные данные следующим образом.

array:10 [▼
  "_method" => "patch"
  "_token" => "gOCL4dK6TfIgs75wV87RdHpFZkD7rBpaJBxJbLHF"
  "editname" => "SUP_EVA_001"
  "editdesc" => "des"
  "editprice" => "1000.050"
  "editlimit" => "1"
  "editperunit" => "20.000"
  "editexceedunit" => "30.000"
  "productid" => "1"
  "id" => "1"
]

Но база данных не была обновлена.

Моя таблица имеет имя Table: subscription_plans, а модель SubscriptionPlan

Это столбцы таблицы:

protected $fillable = [
        'name',
        'description',
        'price',
        'usage_limit',
        'charge_per_unit',
        'charge_per_unit_exceed',
        'is_limit_exceed_considered',
        'product_id'
    ];

Есть идеи, как ее решить или что я сделал не так?

Ответы [ 2 ]

0 голосов
/ 18 октября 2018

Если ваше решение не сработало, попробуйте 1by1 следующим образом.

public function update(Request $request)
{
    $subscriptionplan = SubscriptionPlan::find($request->id);
    $subscriptionplan->_method = $request->_method;
    $subscriptionplan->_token = $request->_token;
    $subscriptionplan->editname = $request->editname;
    $subscriptionplan->editdesc = $request->editdesc;
    $subscriptionplan->editprice = $request->editprice;
    $subscriptionplan->editlimit = $request->editlimit;
    $subscriptionplan->editperunit = $request->editperunit;
    $subscriptionplan->editexceedunit = $request->editexceedunit;
    $subscriptionplan->productid = $request->productid;
    $subscriptionplan->save();        
    return back();        
}
0 голосов
/ 18 октября 2018

Чтобы Laravel автоматически заполнил атрибуты модели, индексы массива, переданные методу заполнения, должны соответствовать именам атрибутов вашей модели.

Кроме того, вместо

$subscriptionplan->update($request->all());

Используйте

$subscriptionplan->fill($request->all());

Затем сохраните план подписки с $subscriptionplan->save();

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...