我使用的是Laravel,我试图使用HasOne::create方法从数组中创建一个相关记录。它插入相关记录,但不向主模型的外部字段添加新id。我做错了什么?
谢谢
$contact = new Contact();
$contact->company = $data['company'] ?? '';
$contact->comment = $data['comment'] ?? '';
$contact->save();
$contact->address()->create($data['address']);
...
var_dump($contact->address_id); exit();
关系工作正常,指定所有字段。由-
var_dump结果-null
此外,$data['地址']包含有效数据,在地址模型中指定为可填充数据,address_id在联系人模型中可填充数据
UPD:
联系类:
public function address()
{
return $this->hasOne(Address::class, 'id', 'address_id');
}
地址类:
public function contact()
{
return $this->belongsTo(Contact::class, 'id', 'address_id');
}
$data['地址']包含一个数组
这里有一个很好的关于雄辩关系的指南。
基于此,我刚刚测试了下面的代码,它运行良好(使用Laravel5.8)
迁移
<?php
use Illuminate\Database\Migrations\Migration;
use Illuminate\Database\Schema\Blueprint;
use Illuminate\Support\Facades\Schema;
class Cars extends Migration
{
public function up()
{
Schema::create('owners', function (Blueprint $table) {
$table->increments('id');
$table->string('name');
$table->timestamps();
});
Schema::create('cars', function (Blueprint $table) {
$table->increments('id');
$table->string('name');
$table->timestamps();
$table->integer('owner_id')->unsigned()->index()->nullable();
$table->foreign('owner_id')->references('id')->on('owners');
});
}
public function down()
{
Schema::drop('cars');
Schema::drop('owners');
}
}
//App/Owner.php
<?php
namespace App;
use Illuminate\Database\Eloquent\Model;
class Owner extends Model
{
protected $fillable = ['name'];
public function car()
{
return $this->hasOne(Car::class);
}
}
//App/Car.php
<?php
namespace App;
use Illuminate\Database\Eloquent\Model;
class Car extends Model
{
protected $fillable = ['name'];
public function owner()
{
return $this->belongsTo(Owner::class);
}
}
测验
<?php
namespace Tests\Feature;
use App\Owner;
use Tests\TestCase;
class TestCars extends TestCase
{
/**
* A basic feature test example.
*
* @return void
*/
public function testExample()
{
$owner = new Owner(['name' => 'Jack']);
$owner->save();
$owner->car()->create(['name' => 'Nice Car']);
}
}
SQL
select * from cars;
------------
# id, name, created_at, updated_at, owner_id
'1', 'Nice Car', '2019-06-21 13:08:58', '2019-06-21 13:08:58', '1'
select * from owners
-------------
# id, name, created_at, updated_at
'1', 'Jack', '2019-06-21 13:08:58', '2019-06-21 13:08:58'
问题内容: 让我们考虑以下情况-“文章”文档中有两个字段- content(string)和views(int)。视图字段未建立索引。views字段包含此文章被阅读了多少次的信息。 来自官方文档: 我们还说过文件是不可变的:它们不能更改,只能替换。更新API必须遵守相同的规则。从外部看,似乎我们正在部分更新文档。但是,在内部,更新API仅管理与我们已经描述过的相同的检索- 更改-重新索引过程。 但
问题内容: 我有一个连接到我的应用程序状态的redux表单,一切似乎都很好。我可以获取数据并将其加载到表单中,然后提交数据并获取所需的元数据… 但是,我有一个自定义交互(颜色选择器),需要动态更改托管字段的值。我尝试的所有操作都将更改屏幕,但不会更改redux表单状态,即,当我提交表单时,我只会获取原始字段数据,而不是表单中显示的新数据。 下面的版本将字段属性传递给组件,并尝试使用ColorSel
问题内容: 我将an 绑定到输入,但是绑定到该变量的值未在该指令声明的位置之外进行更新: 选择新日期时,仅内部会更新。外部的那个仍然是旧值(可能取决于我是否在控制器中声明了它,这无关紧要)。 我正在使用angular-materialize,我不确定这是否是问题的根源,但是没有意义,因为这是与CSS框架materializecss一起使用的特定的angular框架。 这是我正在使用的组件。 编辑:
问题内容: 我正在尝试学习JavaFX,并将swing应用程序转换为JavaFX。我想做的是使用JavaFX来显示程序的进度。 我以前在Swing中所做的是首先使用自定义JComponent创建一个JFrame。然后让我的主程序调用自定义JComponent的方法,该方法将更改JComponent和repaint()中的形状颜色。 下面给出了我想在JavaFX中实现的目标的想法: 我目前将此作为我
我有两个实体具有@OneTomany(Entity1)&@ManyToOne(Entity2)双向关系。在@OneTomany关系中,我有@Cascading{Cascade.All}。但是当我在事务或方法中将具有@ManyToOne关系的实体的初始为false的boolean属性更改为true,然后又变回false时,它会导致数据库触发更新查询,将实体的boolean设置为false,这似乎是错
问题内容: 我正在开发非OSGI应用程序,我需要更新骆驼路线中使用的某些属性的值(已加载BridgePropertyPlaceHolder)。所以我认为: 要使用酷炫的管理控制台Hawtio,以便使用JMX更新骆驼 创建一个将更新属性..的JMX MBean。 我成功创建了MBean操作并使用JMX对其进行了调用,但是我不知道如何更新依赖于这些属性的骆驼路线。 有没有一种方法可以从外部更新骆驼上下