Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/60.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php laravel关系的外键等价物_Php_Mysql_Laravel_Eloquent - Fatal编程技术网

Php laravel关系的外键等价物

Php laravel关系的外键等价物,php,mysql,laravel,eloquent,Php,Mysql,Laravel,Eloquent,所以我有那些模型 // Curso.php public function trienio() { return $this->hasMany('App\Trienio'); } // Trienio.php public function curso() { return $this->belongsTo('App\Curso'); } public function oe() { return $this->belongsTo('App\OE')

所以我有那些模型

// Curso.php
public function trienio()
{
    return $this->hasMany('App\Trienio');
}

// Trienio.php
public function curso()
{
    return $this->belongsTo('App\Curso');
}

public function oe()
{
    return $this->belongsTo('App\OE');
}

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

// Oe.php
public function trienio()
{
    return $this->hasMany('App\Trienio');
}

// Aluno.php
public function trienio()
{
    return $this->belongsTo('App\Trienio');
}

public function pap()
{
    return $this->hasOne('App\PAP');
}

// Pap.php
public function aluno()
{
    return $this->belongsTo('App\Aluno');
}

public function video()
{
    return $this->hasOne('App\Video');
}

// Video.php
public function pap()
{
    return $this->belongsTo('App\Pap');
}
我很难将它们转换为sql外键。有谁能告诉我外键等价物将如何考虑这些雄辩的关系?提前付款

p、 如果需要,我可以提供更多细节


p、 s2-我真正想知道的是,我应该如何根据这些雄辩的关系来构造字段、sql外键和约束。如果您有很多关系,请指定使用的外键。如下

// Curso.php
public function trienio()
{
    return $this->hasMany('App\Trienio', 'curso_id');
}
这意味着您在Curso和Trienio之间有一对多关系,但是表Trienio必须有一个字段作为Curso_id。如果您想要默认实现,则无需使用SQL外键约束建立硬关系。默认情况下,此关系将起作用。 在belongsTo中,您不需要指定可选键

从Curso获取数据

$curso = Curso::find(1);
$trienio = $curso->trienio;
在trienio这边,没关系

// Trienio.php
public function curso()
{
    return $this->belongsTo('App\Curso');
}
对所有其他人来说也是如此。 注意:如果您对Curso和Trienio一对多这样做,Trienio模型的表必须有Curso_id字段,默认情况下,关系将在SQL端不做任何操作的情况下工作。 更新:使用SQL修改Trienio模型的表

使用模式生成器迁移文件


您可以指定级联规则。

如果有多个关系,请指定使用的外键。如下

// Curso.php
public function trienio()
{
    return $this->hasMany('App\Trienio', 'curso_id');
}
这意味着您在Curso和Trienio之间有一对多关系,但是表Trienio必须有一个字段作为Curso_id。如果您想要默认实现,则无需使用SQL外键约束建立硬关系。默认情况下,此关系将起作用。 在belongsTo中,您不需要指定可选键

从Curso获取数据

$curso = Curso::find(1);
$trienio = $curso->trienio;
在trienio这边,没关系

// Trienio.php
public function curso()
{
    return $this->belongsTo('App\Curso');
}
对所有其他人来说也是如此。 注意:如果您对Curso和Trienio一对多这样做,Trienio模型的表必须有Curso_id字段,默认情况下,关系将在SQL端不做任何操作的情况下工作。 更新:使用SQL修改Trienio模型的表

使用模式生成器迁移文件


您可以指定级联规则。

您可以记录迁移完成的查询并查看它们是什么。下面回答。您可以记录迁移完成的查询并查看它们是什么。下面回答。谢谢您的提醒,但我并不真的想要这样做。我想知道的是如何根据我所展示的雄辩的关系在sql数据库中构造外键和约束。我想我没有很好地表达我的观点。在这篇文章中看到我的更新,您可以在创建表时使用laravel schema builder创建关系和外键运行迁移,如果您想使用SQL,那么可以在SQL server上运行SQL语句。但是,一旦你使用ORM建立了关系,就没有必要使用SQL来建立硬关系。谢谢你的提醒,但我真的不想这样。我想知道的是如何根据我所展示的雄辩的关系在sql数据库中构造外键和约束。我想我没有很好地表达我的观点。在这篇文章中看到我的更新,您可以在创建表时使用laravel schema builder创建关系和外键运行迁移,如果您想使用SQL,那么可以在SQL server上运行SQL语句。但是,只要您使用ORM建立关系,就不需要使用SQL来建立硬关系。