【问题标题】:SQLSTATE[42S22]: Column not found: 1054 Unknown column created_at and updated_at column missingSQLSTATE [42S22]:找不到列:1054 未知列 created_at 和 updated_at 列丢失
【发布时间】:2018-03-23 20:51:09
【问题描述】:

我遇到类似 SQLSTATE[42S22]: Column not found: 1054 Unknown column 'updated_at' in 'field list' (SQL: insert into buildings (building_name, updated_at, created_at) 之类的错误值(四号楼,2017-10-12 02:56:13,2017-10-12 02:56:13))。但我的数据库中没有 updated_at 和 created_at 列,这些列怎么会出现在错误中?

BuildingRepository.php

  <?php


namespace App\Repositories\Building;
use App\Building;


interface BuildingRepository
{
    public function getById($id);

    public function getAll();

    public function create(array $attributes); 

    public function update($id, array $attributes);

    public function delete($id);

}

EloquentBuilding.php

<?php


namespace App\Repositories\Building;

use \App\Building;

class EloquentBuilding implements BuildingRepository
{   
    private $model;

    public function __construct(Building $model)
    {   
        $this->model = $model;
    }

    public function getById($id)
    {
        return $this->model->findOrFail($id);
    }

    public function getAll()
    {
        return $this->model->all();
    }

    public function create(array $attributes)
    {
        return $this->model->fill($attributes)->save();
    }

    public function update($id, array $attributes)
    {

    }

    public function delete($id)
    {

    }


}

BuildingController.php

<?php

namespace App\Http\Controllers;

use App\Building;
use Illuminate\Http\Request;
use App\Repositories\Building\BuildingRepository;

class BuildingController extends Controller
{
    /**
     * Display a listing of the resource.
     *
     * @return \Illuminate\Http\Response
     */
    private $building;


    public function __construct(BuildingRepository $building)
    {
        $this->building = $building;
    }

    public function createBuilding()
    {
       return view('building.create');
    }

    public function store(Request $request)
    {
       $this->validate($request, array(
           'building_name'=>'required',
           'building_information'=>'required',
       ));


        $buildings = array('building_name' => $request->building_name,
                            'building_inforamtion' => $request->building_information);


        $this->building->create($buildings);

    }

    public function getAllBuilding()
    {
        $buildings =  $this->building->getAll();
        return view('building.show')->with('buildings', $buildings);
    }

    public function getSpecificRecord()
    {
        $buildings = $this->building->getById(1);
        return view('building.show')->with('buildings', $buildings);
    }
}

建筑.php

<?php

namespace App;

use Illuminate\Database\Eloquent\Model;

class Building extends Model
{
    protected $fillable = [
        'id', 'building_name', 'building_information', 'building_image', 
    ];
}

【问题讨论】:

  • 在你的模型中尝试public $timestamps = false; Building.php
  • @NitishKumar 感谢它的工作,现在我怎样才能让我的列之一为空?
  • 您可以在迁移中定义相同的。
  • 是的,我定义它然后我使用 migrate:rollback 然后再次迁移它,再次感谢。
  • @NitishKumar 我是新手,我想知道我是如何将 buildingcontroller 连接到 eloquentbuilding?

标签: laravel


【解决方案1】:

默认情况下,Eloquent 期望您的表中存在 created_atupdated_at 列。如果您不希望 Eloquent 自动管理这些列,则需要将模型中的 $timestamps 属性设置为 false。您的文件Building.php 应如下所示:

<?php

namespace App;

use Illuminate\Database\Eloquent\Model;

class Building extends Model
{
    public $timestamps = false;

    protected $fillable = [
        'id', 'building_name', 'building_information', 'building_image', 
    ];
}

【讨论】:

    【解决方案2】:

    是的,默认情况下,Eloquent 需要在您的所有表中使用 created_atupdated_at 列。您可以将$timestamps 属性设置为false

    为了使列可以为空,您在迁移中提到了这一点。例如,我想让我的表的地址列可以为空,我这样做。

    $table->string('address')->nullable();

    【讨论】:

      【解决方案3】:

      我遇到了同样的问题。 问题是我在迁移中提到的列名与我在控制器、模型和视图中使用的不同。 因此,我建议您检查是否在迁移中采用了相同的列名,以便进一步用于批量分配。

      【讨论】:

        【解决方案4】:

        从数据库中调出 created_at 和 updated_at 的地方

        enter image description here

        【讨论】:

          猜你喜欢
          • 2016-04-09
          • 2018-02-21
          • 2015-12-08
          • 2018-11-02
          • 2016-01-12
          • 2020-09-02
          • 2019-10-02
          相关资源
          最近更新 更多