Laravel与单列的关系

时间:2018-01-30 08:31:53

标签: 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->timestamps();
});

我想要另一个表,只存储一些字段的ID。我会称之为default_fields

我基本上想要一种关系或逻辑,允许我像其他任何关系一样抓住这些default_fields

Schema::create('default_fields', function (Blueprint $table) {
    $table->increments('id');
    $table->integer("field_id");
});

如何创建一个关系来抓取此表中存在id的所有字段?我也希望能够sync()

我是否只为DefaultField制作模型,然后执行类似Field::whereIn('id', DefaultField::get()->pluck('id'))的操作?

然后编写我自己的sync()逻辑代码?有一种超级简单的方法可以做到这一点,我错过了吗?我也希望能像对待任何其他关系一样对此进行排序。

2 个答案:

答案 0 :(得分:1)

您可以拥有具有此关系的模型Field

public function defaultFields()
{
    return $this->hasMany('App\DefaultField');
}

在您的控制器中,您可以使用与Field相关的DefaultFields来获取$fields = Field::with('defaultFields')->get();

field

您可以在DefaultField模型中使用类似的方法public function field() { return $this->belongsTo('App\Field'); }

DefaultField

在您的控制器中,您可以使用其父Field获取$defaultFields = DefaultField::with('field')->get();

SELECT A.Table_id, T.table_name , dateformat(A.update_time,'mm/dd/yyyy hh:mm:ss.nnnnnn') LastModifiedTime FROM SYS.SYSIQTAB as A, SYS.SYSTABLE as T WHERE A.table_id = T.table_id AND T.table_name ='TableName'

答案 1 :(得分:0)

在您的情况下,更高效的将是' is_default'字段表中的布尔属性。