我有一个表存储,存储有很多库,在库中我有存储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
参数感到困惑,包括在 docs 它说
I'm confused with hasMany
and belongsTo
parameters include, in the docs it says
return $this->hasMany('AppComment', 'foreign_key');
return $this->hasMany('AppComment', 'foreign_key');
return $this->hasMany('AppComment', 'foreign_key', 'local_key');
return $this->hasMany('AppComment', 'foreign_key', 'local_key');
return $this->belongsTo('AppPost', 'foreign_key', 'other_key');
return $this->belongsTo('AppPost', 'foreign_key', 'other_key');
hasMany foreign_key 和 local_key 来自哪个表?和belongsTo一样,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('AppLibrary', 'what_foreign_key_should_be_here','what_other_key_should_be_here');
}
图书馆模型
public function stores(){
return $this->belongsTo('AppStores', '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('AppComment', 'foreign_key', 'local_key');
参数为:
To simplify the syntax, think of the return $this->hasMany('AppComment', 'foreign_key', 'local_key');
parameters as:
id
列的外部表(您要链接到的表)的列(除非您指定了第三个参数,在这种情况下它将使用那个)id
列id
column of the current table (unless you are specifying the third parameter, in which case it will use that)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('AppLibrary');
}
在幕后,Laravel 会自动将Store
表的id
列链接到Library<的
store_id
列/code> 表格.
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('AppLibrary', 'store_id','id');
}
$store->libraries() 或$library->store()
).这篇关于Laravel hasMany 和belongsTo 参数的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持跟版网!