错误 SQLSTATE [HY000]:一般错误:1364 字段“名称”没有默认值(SQL:插入“收藏夹”()值())

Posted

技术标签:

【中文标题】错误 SQLSTATE [HY000]:一般错误:1364 字段“名称”没有默认值(SQL:插入“收藏夹”()值())【英文标题】:ERROR SQLSTATE[HY000]: General error: 1364 Field 'name' doesn't have a default value (SQL: insert into `favorites` () values ()) 【发布时间】:2018-10-16 16:45:22 【问题描述】:

我正在尝试从电台存储库中复制一个电台并将其添加到我最喜欢的存储库中。我在一个 laravel rest API 中。感谢您的帮助!

这是我的控制器:

class FavoriteController extends Controller

    private $favoriteRepository;
    private $stationRepository;

public function __construct(FavoriteRepository $favoriteRepository, StationRepository $stationRepository)

    $this->favoriteRepository = $favoriteRepository;
    $this->stationRepository = $stationRepository;



public function store(int $station_id)

    $favorite = array();
    $favorite[] = $this->stationRepository->findByField("id", $station_id);
    $this->favoriteRepository->create($favorite);
    return response()->json($favorite, 201);


这是收藏夹的数据库:

public function up()

    Schema::create('favorites', function (Blueprint $table) 
        $table->string('name');
        $table->string('city');
        $table->foreign('city')->references('name')->on('cities');
        $table->integer('station_id')->unsigned();
        $table->foreign('station_id')->references('id')->on('stations')->onDelete('cascade');
        $table->integer('user_id')->unsigned();
        $table->foreign('user_id')->references('id')->on('users')->onDelete('cascade');
        #$table->boolean('is_private');
    );

这是我最喜欢的模特

class Favorite extends Model

protected $fillable = ['station_id', 'user_id', 'updated_at', 'name', 'city'];

public $timestamps = false; 

我的仓库中有这两种方法:

function model()

    return "App\\Station";

【问题讨论】:

我建议您在创建之前在线上添加dd($favorite);。在我看来,它好像是空的。 感谢@AlexHarris,发现它是空的!我通过摆脱存储库解决了这个问题 【参考方案1】:

试试这个

public function store($station_id)

    $favorite = $this->stationRepository->where("id", $station_id)->first()->toArray();
    $this->favoriteRepository->create($favorite);
    return response()->json($favorite, 201);


【讨论】:

以上是关于错误 SQLSTATE [HY000]:一般错误:1364 字段“名称”没有默认值(SQL:插入“收藏夹”()值())的主要内容,如果未能解决你的问题,请参考以下文章

PDO 错误:SQLSTATE [HY000]:一般错误:2031

SQLSTATE [HY000]:一般错误:1364 字段“标题”没有默认值

SQLSTATE [HY000]:一般错误:2053

SQLSTATE[HY000]:一般错误:在 Laravel 中迁移期间出现 1005

SQLSTATE [HY000]:一般错误:1364 字段 'uID' 没有默认值

SQLSTATE[HY000]:一般错误:1366 整数值不正确: