无法使用 eloquent 运行工匠并且无法在我的表中创建新记录

Posted

技术标签:

【中文标题】无法使用 eloquent 运行工匠并且无法在我的表中创建新记录【英文标题】:Unable to run artisan using eloquent and unable to create a new record in my table 【发布时间】:2021-03-19 05:25:31 【问题描述】:

我在没有安装 laravel 的情况下使用 eloquent。我很难找到我能理解的雄辩的简单教程,或者给我提供实际工作的说明。我安装的 Eloquent 可用于选择记录、在字段中输入数据等等,但我遇到了一些问题。我正在尝试向我的数据库中添加一条新记录。我发现的那个要我使用“DB::”,但似乎我需要从终端使用工匠来设置它。

当我从终端运行 artisan 时,我得到“无法打开输入文件:artisan”。

我已阅读警告,这意味着我需要位于根文件夹中,这将解决我的问题。我在那里。我可以使用该文件夹中的 eloquent。这是我安装作曲家和雄辩的地方。我还读到 Artisan.php 文件可能没有正确的权限。我尝试在其上使用 chmod 并被拒绝。我应该认为,当 composer 安装 eloquent 时,它会赋予它正确的权限,但我还是尝试了。

当我尝试另一条路线时,我遇到了批量分配错误,并且知道与批量分配相关的安全问题,但是在创建新记录时,我确实需要填写新记录的字段。我不够了解,不知道批量分配错误告诉我要做什么。

这是我尝试过的:

Artists::insert(array(
    'fname' => 'Harry',
    'lname' => 'Potter',
    'tio' => 'yes',
    'preview' => 'yes',
    'telephone' => '510-717-1776'
));

这是错误:

Fatal error: Uncaught Illuminate\Database\Eloquent\MassAssignmentException: Add [fname] to fillable property to allow mass assignment on [Artists]. in /Users/studio-kenoli/Sites/BannerProject/as/vendor/illuminate/database/Eloquent/Model.php:354 Stack trace: #0 /Users/studio-kenoli/Sites/BannerProject/as/vendor/illuminate/database/Eloquent/Model.php(174): Illuminate\Database\Eloquent\Model->fill(Array) #1 /Users/studio-kenoli/Sites/BannerProject/as/vendor/illuminate/database/Eloquent/Model.php(404): Illuminate\Database\Eloquent\Model->__construct(Array) #2 /Users/studio-kenoli/Sites/BannerProject/as/vendor/illuminate/database/Eloquent/Builder.php(1208): Illuminate\Database\Eloquent\Model->newInstance(Array) #3 /Users/studio-kenoli/Sites/BannerProject/as/vendor/illuminate/database/Eloquent/Builder.php(776): Illuminate\Database\Eloquent\Builder->newModelInstance(Array) #4 /Users/studio-kenoli/Sites/BannerProject/as/vendor/illuminate/support/Traits/ForwardsCalls.php(23): Illuminate\Database\Eloquent\Builder->create(Array) #5 in /Users/studio-kenoli/Sites/BannerProject/as/vendor/illuminate/database/Eloquent/Model.php on line 354

桌子的名字是艺术家,我确实为桌子创建了一个模型。它适用于其他情况。我猜是“插入”。我还尝试了“创造”,它的脸平平了。我发现 eloquent 很难使用,而且很难获得有关如何执行我需要使用它的简单 CRUD 操作的简单信息。

【问题讨论】:

你不能跟随教程而忽视他们想要教你的东西。如果文件artisan 不存在,您希望php artisan 如何工作?你用 Laravel 得到 artisan 文件,不——没有 laravel 你不能使用它,它只是一个从命令行引导整个框架的文件。至于您创建记录的问题,错误告诉您-add fname to $fillable property。如果需要,您必须阅读 100 次。这意味着打开你的模型文件,找到或创建protected $fillable = ['fname'];,就是这样。在那里添加其余字段,您解决了创建问题。 谢谢。我做了检查,Artisan.php 确实存在。按照我刚才安装eloquent的说明,不用laravel也可以使用。事实上,在告诉我如何安装它之后,它告诉我从命令行调用 artisan。我不知道如何“将名称添加到 $fillable 属性”。你解释清楚,我会试试的。感谢您的帮助。 所以我按照你的建议做了,得到了以下错误:'致命错误:无法在 /Users/studio-kenoli/Sites/BannerProject/as/models/Artists.php 中重新声明 Artists::$fillable在第 11 行'。在模型文件中使用了您的确切语法。有什么想法吗? 除非你显示代码,否则没有人可以做任何事情。从您发布的内容来看,您似乎有两次protected $fillable。这告诉我你完全是 PHP 新手,基本上都在猜测该怎么做。 我对 php 并不陌生,虽然我对 eloquent 完全陌生。这是我根据您的建议应用的代码:使用 Illuminate\Database\Eloquent\Model 作为 Eloquent;类艺术家扩展 Eloquent public $timestamps = false; protected $fillable = ['fname', 'lname', 'telephone']; 【参考方案1】:

我无法找到如何使用 artisan,但我能够找到使用直接 eloquent 命令的解决方法。

感谢您提供的帮助。

--凯诺利

【讨论】:

以上是关于无法使用 eloquent 运行工匠并且无法在我的表中创建新记录的主要内容,如果未能解决你的问题,请参考以下文章

无法执行Laravel工匠命令

无法执行 Laravel 工匠命令

如何在没有工匠的情况下运行 laravel 迁移(使用代码)

无法在 Laravel Homestead 中运行工匠命令

无法打开输入文件:工匠

在我的控制器中运行工匠命令(make:migration)