我正在Laravel 5中构建一个Web应用程序.该应用程序应该将"类别名称"存储在MySQL数据库中并显示一个表单以添加新的"类别名称".当我执行命令php artisan serve并导航到http:// localhost:8000/admin/categories /时,收到以下错误消息:
PDOException in Connector.php line 50:
SQLSTATE[HY000] [2002] No connection could be made because the target machine actively refused it.
Run Code Online (Sandbox Code Playgroud)
根据我读到的关于堆栈溢出的几篇帖子,许多用户遇到此错误都没有正确配置.env文件,该文件覆盖了PHP数据对象(PDO)的默认设置,如database.php文件中所指定..env文件定义如下:
DB_HOST=localhost
DB_DATABASE=homestead
DB_USERNAME=homestead
DB_PASSWORD=secret
Run Code Online (Sandbox Code Playgroud)
并且database.php文件中的mysql密钥如下:
'mysql' => [
'driver' => 'mysql',
'host' => env('DB_HOST', 'localhost'),
'database' => env('DB_DATABASE', 'homestead'),
'username' => env('DB_USERNAME', 'homestead'),
'password' => env('DB_PASSWORD', 'secret'),
'charset' => 'utf8',
'collation' => 'utf8_unicode_ci',
'prefix' => '',
'strict' => false,
Run Code Online (Sandbox Code Playgroud)
奇怪的是,当我进入我的虚拟机并运行时mysql -uhomestead -psecret homestead,我能够连接到数据库.问题是,当我可以使用相同的参数直接连接到它时,为什么Laravel无法连接到MySQL?还有什么可以拒绝进入Laravel?
我正在阅读"Laravel 5 Essentials"中的教程.当我尝试使用命令播种数据库时
php artisan db:seed
我收到错误
[ReflectionException]
Class BreedsTableSeeder does not exist
Run Code Online (Sandbox Code Playgroud)
BreedsTableSeeder的代码定义如下:
<?
use Illuminate\Database\Seeder;
use Illuminate\Database\Eloquent\Model;
class BreedsTableSeeder extends Seeder {
public function run()
{
DB:table('breeds')->insert([
['id' => 1, 'name' => "Domestic"],
['id' => 2, 'name' => "Persian"],
['id' => 3, 'name' => "Siamese"],
['id' => 4, 'name' => "Abyssinian"],
]);
}
}
Run Code Online (Sandbox Code Playgroud)
DatabaseSeeder定义如下:
<?php
use Illuminate\Database\Seeder;
use Illuminate\Database\Eloquent\Model;
class DatabaseSeeder extends Seeder
{
/**
* Run the database seeds.
*
* @return void
*/
public function …Run Code Online (Sandbox Code Playgroud) 我试图通过指定来更改我的 php.ini 文件中的变量max_input_vars
; How many GET/POST/COOKIE input variables may be accepted
max_input_vars = 2500
Run Code Online (Sandbox Code Playgroud)
和跑步
sudo nginx -s reload
Run Code Online (Sandbox Code Playgroud)
尽管我在本地机器 (C:\xampp\php\php.ini) 和 Homestead (/etc/php5/fpm/php.ini) 上将此变量设置为 2500,但我仍然收到以下错误消息
parse_str(): Input variables exceeded 1000. To increase the limit change max_input_vars in php.ini
Run Code Online (Sandbox Code Playgroud)
我知道 .htaccess 在每个站点的基础上覆盖 php.ini,是否还有其他文件覆盖 php.ini?更改php.ini文件后是否还有其他服务需要重新加载?
我正在尝试为站点管理员创建一个表单,以将事件与之前的发言者列表相关联.管理员导航到扬声器,单击"添加到事件"按钮,然后会出现一个表格,询问发言人正在参加哪个活动.扬声器应该作为隐藏字段传入,并通过集合选择列出事件.不幸的是,当我提交表单时,扬声器ID没有传入数据库.
为什么我的表单不保存隐藏字段中的值,我该如何修复它?集合选择中的值正在传递.
<%= form_for(@event_speaker) do |f| %>
<% if @event_speaker.errors.any? %>
<div id="error_explanation">
<h2><%= pluralize(@event_speaker.errors.count, "error") %> prohibited this event_speaker from being saved:</h2>
<ul>
<% @event_speaker.errors.full_messages.each do |msg| %>
<li><%= msg %></li>
<% end %>
</ul>
</div>
<% end %>
<p><%= @speaker.first_name %></p>
<div class="actions">
<%= @speaker.id %>
<%= f.hidden_field(:speaker) %>
<%= hidden_field_tag('speaker_id',@speaker.id) %>
</div>
<div class="field">
<%= f.label :event %><br>
<%= f.collection_select(:event_id, @upcoming_events, :id, :name)%>
</div>
<div class="actions">
<%= f.submit %>
</div>
<% end %>
Run Code Online (Sandbox Code Playgroud)
和控制器:
def new
@event_speaker …Run Code Online (Sandbox Code Playgroud)