BadMethodCallException:方法年份不存在

时间:2018-01-14 23:31:33

标签: php laravel laravel-5.5

我想通过迁移在我的数据库中创建一组表。因此,对于其中一个表格,我有这一行:

<link href="https://use.fontawesome.com/releases/v5.0.4/css/all.css" rel="stylesheet">
<div>
  <input type="checkbox" checked>
  <br/>
  <input type="checkbox" checked>
  <br/>
  <input type="checkbox" checked>
</div>

并且似乎此行存在问题,因为我在输入$table->year('year')->nullable(false); ... 命令后收到以下错误消息:

  

[BadMethodCallException]   方法年不存在。

我没有输入拼写错误,尝试了不同的列名,没有使用php artisan migrate:fresh。我的数据库(10.1.28-MariaDB)中提供了nullable(false)类型。 有问题的行就像创建表的闭包内的其他行一样。

我在互联网上遇到过很多类似的主题,但它们涉及其他方法(通常是自定义用户&#39;方法,而不是Laravel内置的方法),在这些情况下,人们试图在他们的控制器/模型中调用方法基本上他们混淆/错过了对象,这不是这里的情况。 Laravel 5.5.22,localhost,Windows。那么,如何解决这个问题并使迁移创建表?

1 个答案:

答案 0 :(得分:2)

因此,year type未列在API Docs for 5.5 for Mysql Grammar Type

You can view that here

但是,github存储库显示它已添加in this commit here

this hash上,您可以看到泰勒修复了与typeYear方法有关的一些问题。

所以我的结论是您必须手动使用illuminate/database5.7-dev。由于laravel/framework中列出的当前版本为self.version。解析为5.5-devtypeYear中没有MysqlGrammar方法的5.7-dev,但data2= '{ "fromID" 1 "toID" 2 "value" [ 20 18] } { "fromID" 1 "toID" 3 "value" [ 12 12] } '; out = str2double(regexp(data2, '\d+', 'match')); 会这样做。

相关问题