gpt4 book ai didi

mysql - Laravel 5.1 Eloquent 关系模型-如何更新外键列?

转载 作者:可可西里 更新时间:2023-11-01 07:06:59 27 4
gpt4 key购买 nike

我是 laravel 的初学者。以前从未使用过框架。我创建了一个名为“tabletest”的数据库。它有两个表。一个是用户表,另一个是电话表。用户表有两列(ID 和名称)。 phone 表有 3 列(id phone 和 user_id)。我正在尝试的是,我将使用表单获取输入并将输入发送到数据库表。尽管姓名和电话已正确保存在不同的表中,但外键列 user_id 未更新。它一直是 0。我现在该怎么办?

迁移文件是:

用户表:

public function up()
{
Schema::create('user', function (Blueprint $table) {
$table->increments('id');
$table->string('name');
$table->timestamps();
});
}

电话表:

public function up()
{
Schema::create('phone', function (Blueprint $table) {
$table->increments('id');
$table->string('phone');
$table->unsignedInteger('user_id');
$table->timestamps();
});
}

用户模型:

use App\Model\Phone;
class User extends Model
{
protected $table = "user";
protected $fillable = ['name'];

public function phone(){
return $this->hasOne(Phone::class);
}
}

手机型号:

use App\Model\User;
class Phone extends Model
{
protected $table = "phone";
protected $fillable = ['phone','user_id'];

public function user(){
return $this->belongsTo(User::class);
}
}

PhoneController.php

   <?php

namespace App\Http\Controllers;

use Illuminate\Http\Request;

use App\Http\Requests;
use App\Http\Controllers\Controller;
use App\model\User;
use App\model\Phone;
class PhoneController extends Controller
{
public function store(Request $request)
{
User::create([

'name' => $request->name
]);
Phone::create([
'phone' => $request->phone
]);
}
}

这里是电话表的截图:phone table

最佳答案

您永远不会指定要为哪个用户创建电话号码。即使您有一个外键,它也只会索引和约束 user_id 列。 MySQL 无法“读取”您的 PHP 代码并假设您正在为哪个用户创建电话号码。

有几个选项。

您可以这样做:

$user = User::create([
'name' => $request->input('name')
]);

Phone::create([
'phone' => $request->phone,
'user_id' => $user->id
]);

或者另一种方式是:

$user = User::create([
'name' => $request->input('name')
]);

$user->phone()->create([ // this uses the create method on the users phone relationship
'phone' => 999999999,
]);

不确定是否也可以改变它,但为了可读性,我不推荐它(即 User::create([])->phone()->create([]);)

关于mysql - Laravel 5.1 Eloquent 关系模型-如何更新外键列?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33898065/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com