Javascript 将JS数组提交给雄辩的控制器
我发现很难找到关于如何构建有说服力的函数将数据存储到MySQL数据库的文档 目前,我可以通过从表单字段获取值,将变量引入MySQL数据库:Javascript 将JS数组提交给雄辩的控制器,javascript,php,mysql,laravel,Javascript,Php,Mysql,Laravel,我发现很难找到关于如何构建有说服力的函数将数据存储到MySQL数据库的文档 目前,我可以通过从表单字段获取值,将变量引入MySQL数据库: $new_character->character_name = request('characterName'); characterName是表单字段的ID 但是我有一些变量,我想把它们放到一个新的DB行中。我该怎么做 我尝试使用jquery将数组分配给表单: <input type="text" class="form-control"
$new_character->character_name = request('characterName');
characterName是表单字段的ID
但是我有一些变量,我想把它们放到一个新的DB行中。我该怎么做
我尝试使用jquery将数组分配给表单:
<input type="text" class="form-control" id="skillsField">
skillsVar = skillsList.toString(); // skillsVar is an array of strings
$('#skillsField').val(skillsVar);
但这只会导致将null提交给DB
非常感谢您对这个问题的帮助,让我看一篇文档,它简单地解释了Laravel中的DB CRUD,更是如此
型号和控制器:
视图:
视图很长,相关代码行有:
502-503:我试图用来保存变量的表单
559-581:单击按钮时运行的JS代码,它将所有勾选的复选框值放入一个数组,将其转换为字符串并将其分配给变量。尝试将输入更改为:
<input type="text" class="form-control" name="skillsField" id="skillsField">
查看您的代码,您的模型本身看起来不完整,缺少表结构和定义 我在下面根据您的视图和控制器做出了一些假设,以确定模型的外观
<?php
namespace App;
use Illuminate\Database\Eloquent\Model;
class Character extends Model
{
protected $table = 'characters'
public $timestamps = false;
protected $fillable = [
'player_id',
'campaign_id',
'character_name',
'Race',
'Class',
'Level',
'Strength',
'Dexterity',
'Constitution',
'Intelligence',
'Wisdom',
'Charisma',
'Proficiency',
'Trained_Skills',
'Languages',
'Hit_Die',
'HP'
];
// If you have a specific id field as a primary key use this:
protected $guarded = ['id'];
public static function userChars()
{
return static::where('player_id', '=', \Auth::user()->id)->get();
}
}
如何填充“skillsList”-这是通过用户输入在客户端填充的还是在Javascript中设置的?从一开始它看起来像skillsList,随后skillsVar可能是空的,因此将其传递给控制器可能是您的问题。此外,假设$new_character是对已创建的实际角色模型的引用,那么您的流程应该可以工作,并且经过培训的_技能是db和模型中的实际列。一个简单而好的起点应该可以帮助你:@MatthewFritz它填充了客户端:用户单击复选框,JS函数循环遍历所有复选框,获取选中的值并将它们放入数组中。在提交表单之前,我使用console.log()查看skillsList,它工作正常。谢谢你的链接!您能否共享您的模型、视图和控制器代码?将有助于为您提供正确的答案。@MatthewFritz DoneNo joy,仍然为空。谢谢你!谢谢你的帮助!我发现了问题所在:我用来插入值的两个字段在表单div之外,因此没有通过提交按钮提交。我在做你建议的更改时发现了这一点,谢谢@RuairiMcNicholas-没问题。很高兴你发现了这个问题。像这样的小事真的会让人沮丧。
<?php
namespace App;
use Illuminate\Database\Eloquent\Model;
class Character extends Model
{
protected $table = 'characters'
public $timestamps = false;
protected $fillable = [
'player_id',
'campaign_id',
'character_name',
'Race',
'Class',
'Level',
'Strength',
'Dexterity',
'Constitution',
'Intelligence',
'Wisdom',
'Charisma',
'Proficiency',
'Trained_Skills',
'Languages',
'Hit_Die',
'HP'
];
// If you have a specific id field as a primary key use this:
protected $guarded = ['id'];
public static function userChars()
{
return static::where('player_id', '=', \Auth::user()->id)->get();
}
}
<input type="text" class="form-control" id="skillsField" name="skillsField">
<input type="text" class="form-control" id="languagesField" name="languagesField">