Laravel hasMany和belongsTo参数 [英] Laravel hasMany and belongsTo parameters
问题描述
我有一个表存储,并且存储有很多库,在库中,我有存储store_id
的外键.
I have a table store, and store has many libraries, in library I have foreign key of store store_id
.
存储表
id(PK)
图书馆桌
id(PK)
store_id(FK)
我对hasMany
和belongsTo
的参数感到困惑,它们包含在
I'm confused with hasMany
and belongsTo
parameters include, in the docs it says
返回$ this-> hasMany('App \ Comment','foreign_key');
return $this->hasMany('App\Comment', 'foreign_key');
返回$ this-> hasMany('App \ Comment','foreign_key','local_key');
return $this->hasMany('App\Comment', 'foreign_key', 'local_key');
返回$ this-> belongsTo('App \ Post','foreign_key','other_key');
return $this->belongsTo('App\Post', 'foreign_key', 'other_key');
hasMany foreign_key和local_key的哪个表来自?与belongs一样,foreign_key和other_key的表来自哪个?
Which table of hasMany foreign_key and local_key came from? Same with belongsTo which table of foreign_key and other_key came from?
商店型号
public function library(){
return $this->hasMany('App\Library', 'what_foreign_key_should_be_here','what_other_key_should_be_here');
}
库模型
public function stores(){
return $this->belongsTo('App\Stores', 'what_foreign_key_should_be_here', 'what_other_key_should_be_here');
}
因为有时我将表的主键ID更改为sid之类的其他名称,所以我总是想指定哪个是外键和主键
Because sometimes I change my primary key id of a table to other name like sid, so I always want to specify which is foreign key and primary key
推荐答案
为简化语法,请将return $this->hasMany('App\Comment', 'foreign_key', 'local_key');
参数考虑为:
To simplify the syntax, think of the return $this->hasMany('App\Comment', 'foreign_key', 'local_key');
parameters as:
- 您要链接的模型
- 外部表(您要链接的表)的列,该表链接回到当前表的
id
列(除非您指定第三个参数,在这种情况下它将使用该参数) - 当前表中应使用的列-即,如果您不希望另一个表的外键链接到当前表的
id
列
- The model you want to link to
- The column of the foreign table (the table you are linking to) that links back to the
id
column of the current table (unless you are specifying the third parameter, in which case it will use that) - The column of the current table that should be used - i.e if you don't want the foreign key of the other table to link to the
id
column of the current table
在您的情况下,因为您在libraries
表中使用了store_id
,所以您自己的生活变得很轻松.在您的Store
模型中定义时,以下内容应该可以正常工作:
In your circumstance, because you have used store_id
in the libraries
table, you've made life easy for yourself. The below should work perfectly when defined in your Store
model:
public function libraries()
{
return $this->hasMany('App\Library');
}
在后台,Laravel将自动将Store
表的id
列链接到Library
表的store_id
列.
Behind the scenes, Laravel will automatically link the id
column of the Store
table to the store_id
column of the Library
table.
如果要显式定义它,则可以这样做:
If you wanted to explicitly define it, then you would do it like this:
public function libraries(){
return $this->hasMany('App\Library', 'store_id','id');
}
- 一个模型标准是,单数命名的函数返回一个belongsTo,而复数函数返回一个hasMany(即
$store->libraries() or $library->store()
). - A model standard is that singularly-named functions return a belongsTo, while a plural function returns a hasMany (ie.
$store->libraries() or $library->store()
).
这篇关于Laravel hasMany和belongsTo参数的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!