gpt4 book ai didi

php - Laravel 如何在 Controller 中使用 create 函数添加记录?

转载 作者:行者123 更新时间:2023-11-29 09:40:38 24 4
gpt4 key购买 nike

NewsController.php

这是 Controller ,我使用创建函数将记录添加到数据库,但是当我添加时,所有记录将为空

public function insertNews() {
$attribute = [
'Ntitle' => 'News Title',
'Ndesc' => 'News Description',
'Naddedby' => 'News Added By',
'Ncontent' => 'News Content',
'Nstatus' => 'News Status'
];
$data = $this->validate(request(), [
'Ntitle' => 'required',
'Ndesc' => 'required',
'Naddedby' => 'required',
'Ncontent' => 'required',
'Nstatus' => 'required'
], [], $attribute);
News::create($data);
return redirect('all/news');
}

我使用 dd() 显示记录,它将与 token 和所有其他值一起显示

dd(request()->all()) 

新闻.php这是模型文件

namespace App;

use Illuminate\Database\Eloquent\Model;
use Illuminate\Database\Eloquent\SoftDeletes;

class News extends Model
{
use SoftDeletes;
protected $primaryKey = 'News_ID';
protected $date = ['delete_at'];
protected $fillable = ['News_Title', 'News_Descrption', 'News_Content', 'Added_By', 'News_Status'];
}

web.php这是网络文件(路线)

Route::post('insert/news', 'NewsController@insertNews');

news.blade.php

这是包含我发送到 Controller 的表单的 Blade 文件

<form action="{{ url('insert/news') }}" method="POST">
{{ csrf_field() }}
<input type="text" name="Ntitle" value="{{ old('Ntitle') }}" placeholder="News Title"><br />
<input type="text" name="Ndesc" value="{{ old('Ndesc') }}" placeholder="News Descrption"><br />
<input type="number" name="Naddedby" value="{{ old('Naddedby') }}" placeholder="News Added By"><br />
<textarea name="Ncontent" value="{{ old('Ncontent') }}" placeholder="News Content"></textarea><br />
<select name="Nstatus">
<option value="Active" {{ old('Nstatus') == 'Active' ? 'selected' : '' }}>Active</option>
<option value="Pending" {{ old('Nstatus') == 'Pending' ? 'selected' : '' }}>Pending</option>
<option value="Disabled" {{ old('Nstatus') == 'Disabled' ? 'selected' : '' }}>Disabled</option>
</select><br />
<input type="submit" value="Add News">
</form>

enter image description here

最佳答案

There are number of reasons for your code to not work:

  1. 就您而言,您错误地将 $data 等同于验证对象。您应该在 create 函数中使用 $attribute(数据的键值数组,而不是验证对象)而不是 $data。
  2. 其次,在创建数据的数组中传递的键应该与您用于数据插入的表的字段名称完全相同。我看到您的代码显示 Ntitle、Ndesc 等用于验证并在 $attribute 数组中,而可填充的 protected $fillable 具有不同的字段名称!因此,请在您传递的数据和模型中的 $fillable 中使用正确的字段名称。我正在编写以下代码,假设 Ntitle、Ndesc、Naddedby、Ncontent、Nstatus 是表的字段名称。具体请引用下面的代码!

public function insertNews() {
$attribute = [
'Ntitle' => 'News Title',
'Ndesc' => 'News Description',
'Naddedby' => 'News Added By',
'Ncontent' => 'News Content',
'Nstatus' => 'News Status'
];
$this->validate(request(), [
'Ntitle' => 'required',
'Ndesc' => 'required',
'Naddedby' => 'required',
'Ncontent' => 'required',
'Nstatus' => 'required'
], [], $attribute);
News::create($attribute);
return redirect('all/news');
}

确保您已将所有字段添加到 protected $fillable = [];在你的模型中像这样:

class News extends Model {

protected $fillable = [
'Ntitle', 'Ndesc', 'Naddedby', 'Ncontent', 'Nstatus'
];

关于php - Laravel 如何在 Controller 中使用 create 函数添加记录?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56733336/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com