我发现很难找到有关如何构建Eloquent函数以将数据存储到MySQL数据库的文档。
目前,我可以通过从表单字段中获取值将变量引入MySQL数据库:
$new_character->character_name = request('characterName');
characterName是表单字段的ID。
但是我想要将变量引入新的数据库行。我该怎么做?
我尝试使用jquery将数组分配给表单:
<input type="text" class="form-control" id="skillsField">
skillsVar = skillsList.toString(); // skillsVar is an array of strings
$('#skillsField').val(skillsVar);
然后在Eloquent模型中:
$new_character->Trained_Skills = request('skillsField');
但这只会导致 null 被提交给数据库。
对这个问题的帮助表示赞赏,并指出了一个简单解释Laravel中DB CRUD的文档!
模特&amp;控制器: https://pastebin.com/qVVxG3aF
查看: https://pastebin.com/Ef7b1uPp
查看很长,相关的代码行是: 502 - 503:我试图用来保存变量的表单 559 - 581:单击按钮时运行的JS代码,将所有勾选的复选框值放入数组中,将其转换为字符串并将其分配给变量。
答案 0 :(得分:0)
尝试将输入更改为:
<input type="text" class="form-control" name="skillsField" id="skillsField">
答案 1 :(得分:0)
查看代码时,您的模型本身看起来不完整,缺乏表格结构和定义。
我根据你的视图和控制器做了一些假设,以确定模型应该看起来像什么。
<?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();
}
}
然后你的控制器看起来很好,只要它创建字符并根据传入的请求对象分配值。
在您的视图中,对于您用于插入技能var值和语言var值的两个字段,请确保包含“name”,因为这是在传递请求对象时用于引用的内容:
<input type="text" class="form-control" id="skillsField" name="skillsField">
<input type="text" class="form-control" id="languagesField" name="languagesField">
最后,在控制器端进行测试时,我建议在请求对象上执行 var_dump ,或者至少在请求('skillsField')和上执行 var_dump request('languagesField')以确保请求对象在尝试写入数据库表本身之前实际包含您期望的值。