

可以获取到数字的值 忘记了应该怎么用字符串写入数据库aa 希望大家来拯救我
关注引自免费微信小程序:皆我百晓生
在 Laravel 中,如果你想要将用户选择的爱好(作为数字)写入数据库,你需要确保你在表单中提交的数据是可读的,并且在控制器中正确处理这些数据。首先,确认你的模型、迁移文件以及控制器都已经准备就绪。
这里是一个详细的步骤:
创建一个模型 (如果还没有)
在命令行运行 php artisan make:model Hobby -m 来创建一个名为 Hobby 的模型,并为它生成对应的数据库迁移文件。
编辑数据库迁移文件
打开 database/migrations 目录下的相应迁移文件,例如 2023_04_06_000000_create_hobbies_table.php,然后添加一个字段来存储爱好(假设我们叫它 interest_id),类型为 INT 或者 tinyint(取决于你的需求)。
Schema::create('hobbies', function (Blueprint $table) {
$table->id();
$table->integer('interest_id');
// 其他字段...
$table->timestamps();
});
更新模型 (app/Hobby.php)
更新模型类,添加对 interest_id 字段的访问器和 mutator。
class Hobby extends Model
{
protected $fillable = ['interest_id'];
public function getInterestLabelAttribute()
{
// 这里可以根据 interest_id 从其他表或常量数组中获取对应的爱好名称
// 示例:$labels = [1 => '跑步', 2 => '篮球', 3 => '健身'];
$labels = [
1 => '跑步',
2 => '篮球',
3 => '健身'
];
return $labels[$this->interest_id] ?? '';
}
}
编辑控制器 (app/Http/Controllers/YourController.php)
在处理表单提交的地方,获取选中的爱好并将其转换为整数数组。然后将这个数组与其它数据一起保存到数据库。
use App\Models\Hobby;
class YourController extends Controller
{
public function store(Request $request)
{
$selectedHobbies = $request->get('hobbit') ?? [];
$interestIds = array_map(function ($hobbyId) {
return (int)$hobbyId;
}, $selectedHobbies);
// 获取其他表单数据
$username = $request->input('username');
$psw = $request->input('psw');
$email = $request->input('email');
$age = $request->input('age');
// 创建新记录
$user = new User([
'username' => $username,
'psw' => $psw,
'email' => $email,
'age' => $age
]);
// 保存用户
$user->save();
// 将爱好关联到用户
foreach ($interestIds as $interestId) {
$hobby = new Hobby(['interest_id' => $interestId]);
$user->hobbies()->save($hobby);
}
// 返回成功消息或其他操作
}
}
更新视图 (blade 文件) 确保你的 HTML 表单元素有正确的 name 属性,以便在控制器中能接收到它们的值。
<tr>
<label>爱好</label><br>
<input type="checkbox" value="1" name="hobbit[]">跑步
<input type="checkbox" value="2" name="hobbit[]">篮球
<input type="checkbox" value="3" name="hobbit[]">健身
</tr>
现在,当用户提交表单时,Laravel 会处理这些爱好值,并将它们与用户对象关联起来。在查看用户信息时,你可以通过 $user->hobbies 获得用户的爱好列表,同时也可以使用 getInterestLabelAttribute 访问器来获取更友好的显示文本。