当前位置: 首页 > 知识库问答 >
问题:

Laravel雄辩模型:2个字段,一个fk参考另一个表上的2个字段

双俊人
2023-03-14

我想使用Laravel雄辩的模型和关系来连接项目中所有表中的数据;然而,我在翻译这些关系时遇到了一个问题。例如,我有两张桌子;第一个是Books表,另一个是Author表。

Schema::create('books', function (Blueprint $table) {
    $table->increments('id');
    $table->string('code', 20)->unique('ak_books__code')->nullable(false);
    $table->smallInteger('books_type_id');
    $table->float('detection_limit', 10, 0);
    $table->smallInteger('books_classification_id');
    $table->smallInteger('books_number');
    $table->foreign(['books_classification_id', 'books_number'], 'fk_books__classification_scales')
        ->references(['calibration_id', 'number'])->on('classification')
        ->onUpdate('RESTRICT')->onDelete('RESTRICT');
});

Schema::create('classification', function (Blueprint $table) {
    $table->smallInteger('calibration_id');
    $table->smallInteger('number');
    $table->string('name', 50);
    $table->primary(['calibration_id', 'number'], 'pk_classification_scales');
    $table->foreign('calibration_id', 'fk_classification_calibration')->references('id')
        ->on('calibration_parameters')->onUpdate('CASCADE')->onDelete('CASCADE');
});

如何在Books表上建立关系以获取编号校准id

共有1个答案

廉实
2023-03-14

与图书分类一样,我将向您展示一个关于任务与项目之间关系的示例(此任务的项目是什么):

任务

/**
 * Run the migrations.
 *
 * @return void
 */
public function up()
{
    Schema::create('tasks', function (Blueprint $table) {
        $table->increments('id');
        $table->string('name');
        $table->text('description');
        $table->string('name');
        $table->integer('project_id')->unsigned();
        $table->timestamp('start_date');
        $table->timestamp('end_date');
        $table->timestamps();

        $table->foreign('project_id')->references('id')->on('projects')->onDelete('cascade')->onUpdate('cascade');
    });
}

/**
 * Reverse the migrations.
 *
 * @return void
 */
public function down()
{
    Schema::dropIfExists('tasks');
}

项目

/**
 * Run the migrations.
 *
 * @return void
 */
public function up()
{
    Schema::create('projects', function (Blueprint $table) {
        $table->increments('id');
        $table->string('name');
        $table->string('description');
        $table->tinyInteger('active')->default(1);
        $table->timestamps();
    });
}

/**
 * Reverse the migrations.
 *
 * @return void
 */
public function down()
{
    Schema::dropIfExists('projects');
}

我希望它能帮助你,问候你!

 类似资料:
  • 我有一个无法解决的问题。我有一个包含TitleID、TextID、ImageID的新闻表。还有三张表格,标题,文本,图片。我想把它们都放在一个模型里。但当我尝试时,得到的结果就像数组中的数组。但我想要的是: 雄辩的ORM对此的反应如下: 数据库结构 新闻= 头衔= 其他表类似于标题表。

  • 问题: 我已经在lucene索引中索引了NGA Geonames地名录。我需要模糊查询一个字段(地名),但将查询限制为具有特定国家代码的记录。下面是我正在运行的一个示例查询 我没有使用SOLR,我已经做了大量的研究和尝试,但我没有明确的答案,可能是我的速度太慢了。 我想对印度进行模糊搜索,但我只想要与“in”(国家代码)完全匹配的记录

  • 简介: 我有这些表与他们的模型: 地址表-- 规则: 每个用户只能有一个地址 这里可以进行两种可能的关系规划: > 用户有一个地址和地址属性To User[即一对一关系],但缺点是外键位于地址表中,即user_id字段,通过与其他模型[公司和财产]重复相同的关系,我们将获得地址表中的另外两个外键是[company_id和property_id],那么我们将最终得到3个外键用于3个型号,但每行记录只

  • 问题内容: 无论如何,我可以将两个模型值绑定到一个输入字段吗? 假设我有一个输入字段,我想将其作为范围内两个变量的值,例如: 问题答案: 您不能,但是有一些解决方法。 1.使用ngChange更新其他模型 2.您可以观看模型,并在更改时更新另一个模型 如果您想使它们保持同步,则还需要注意其中的变化。 这里的例子

  • 我在编程一个订单提交页面时遇到了一个相当大的问题,该页面的目的是提交一个订单的争议--提供两个字段被填写,但只有当一个字段少于另一个字段时。 基本上,一个是下拉,另一个是争端框,查询如下: 如果DispotestExtBox=“”而下拉框=“请选择...” 一切正常-提交按钮已启用 如果DisportestExtBox!=“”而下拉框=“请选择...” 错误(反之亦然,因此如果填充了Dispone