Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/55.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php Laravel如何在控制器中使用创建功能添加记录?_Php_Mysql_Laravel_Web Development Server - Fatal编程技术网

Php Laravel如何在控制器中使用创建功能添加记录?

Php Laravel如何在控制器中使用创建功能添加记录?,php,mysql,laravel,web-development-server,Php,Mysql,Laravel,Web Development Server,NewsController.php 这是控制器,我使用create函数将记录添加到数据库中,但添加时所有记录都将为空 public function insertNews() { $attribute = [ 'Ntitle' => 'News Title', 'Ndesc' => 'News Description', 'Naddedby' => 'News Added By', 'Ncont

NewsController.php

这是控制器,我使用create函数将记录添加到数据库中,但添加时所有记录都将为空

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来显示记录,它将与令牌和所有其他值一起显示

dd(request()->all()) 
News.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 这是web文件路由

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

这是包含我发送给控制器的表单的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>

您需要将该值传递给create方法

//Passing the request to create method
    News::create($request->all());
    return redirect('all/news');
如果您在新闻模型中的$fillable变量中添加了输入名称,它现在将进行存储

//News.php (Model)
protected $fillable = ['Ntitle', 'Ndesc', 'Naddedby', 'Ncontent', 'Nstatus'];
我更喜欢使用

//News.php (Model)
protected $guarded = [];
代码不起作用的原因有很多:

在您的情况下,您错误地将$data等同于验证对象。您应该使用$attribute作为数据的键值数组,而不是create函数中的验证对象,而不是$data。 其次,在create data数组中传递的键应该与用于数据插入的表的字段名完全相同。我看到您的代码显示Ntitle、Ndesc等被用于验证和$attribute数组中,而可填充受保护的$fillable具有不同的字段名!因此,请在传递的数据和模型中的$fillable中使用正确的字段名。我在编写下面的代码时假设Ntitle、Ndesc、Naddedby、Ncontent、Nstatus是表的字段名。因此,请参考以下代码! 确保已将所有字段添加到受保护的$fillable=[];在您的模型中,如下所示:

class News extends Model {

    protected $fillable = [
      'Ntitle', 'Ndesc', 'Naddedby', 'Ncontent', 'Nstatus'
    ];
能告诉我你的网络路线吗? 所以我可以看出是什么错误

我想你的路线应该是

Route::namespace('your_Controller_Foldername')->group(function () {

 Route::resource('insert/news', 'NewsController');

 });

很高兴它有帮助:
Route::namespace('your_Controller_Foldername')->group(function () {

 Route::resource('insert/news', 'NewsController');

 });