我有一个表存储,并且存储有很多库,在库中,我有存储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:
在您的情况下,因为您在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参数
发布评论