Php 单柱拉威尔关系
我有一个名为fields的表:Php 单柱拉威尔关系,php,laravel,relationship,Php,Laravel,Relationship,我有一个名为fields的表: Schema::create('fields', function (Blueprint $table) { $table->increments('id'); $table->string("label"); $table->string("name")->unique(); $table->text("options")->nullable(); $table->timestam
Schema::create('fields', function (Blueprint $table) {
$table->increments('id');
$table->string("label");
$table->string("name")->unique();
$table->text("options")->nullable();
$table->timestamps();
});
我想要另一个表,它只存储一些字段的ID。我将此字段称为默认字段
我基本上想要一种关系或逻辑,它允许我像处理任何其他关系一样获取这些默认的_字段:
Schema::create('default_fields', function (Blueprint $table) {
$table->increments('id');
$table->integer("field_id");
});
如何创建一个关系来获取此表中id存在的所有字段?我也希望能够同步
我会为DefaultField创建一个模型,然后像Field::where'id',DefaultField::get->pull'id'这样做吗
然后编写我自己的同步逻辑?有没有一个超级简单的方法让我错过了?我还希望能够像处理任何其他关系一样对此进行排序。在您的情况下,字段表中的“is_default”布尔属性将更有效。您可以使用具有此关系的模型字段:
public function defaultFields()
{
return $this->hasMany('App\DefaultField');
}
在控制器中,您可以获取字段及其相关的默认字段,如:
您可以在DefaultField模型中使用类似的方法字段:
在控制器中,您可以获取DefaultField及其父字段:
我需要它像一个关系一样工作,因为默认\u字段也将根据其id顺序进行排序。例如,您可以添加排序\u默认\u编号。在您的情况下,规范化是开销。在他的情况下,使用$fields=Field::whereHas'defaultFields'->get;,不是更好吗?我就是这样理解他的案子的?kjdion84?
$fields = Field::with('defaultFields')->get();
public function field()
{
return $this->belongsTo('App\Field');
}
$defaultFields = DefaultField::with('field')->get();