laravel雄辩的本地关键是什么

apa*_*che 5 sql database laravel

http://laravel.com/docs/4.2/eloquent#relationships

本地钥匙在这件事上意味着什么?它是否意味着表的主键?或者是什么?例如在此代码中

return $this->hasOne('Phone', 'foreign_key');

return $this->hasOne('Phone', 'foreign_key', 'local_key');
Run Code Online (Sandbox Code Playgroud)

zen*_*zen 6

local_key是你的表的主键.如果未调用主键,则只需指定它id.

  • 这并不是 100% 准确。如果您想使用 Laravel 识别为表主键之外的列,则只需设置 `local_key` 。默认情况下,这确实是“id”,但如果您已经将“$primaryKey”属性设置为“foo_id”,则无需将“foo_id”指定为“local_key”。 (2认同)

小智 4

我相信一切都写在文档中:

请注意,Eloquent 根据模型名称假定关系的外键。在本例中,假设 Phone 模型使用 user_id 外键。如果您希望覆盖此约定,您可以将第二个参数传递给 hasOne 方法。此外,您可以将第三个参数传递给该方法来指定应用于关联的本地列:

这基本上意味着“local_key”是数据库中表列的名称,负责将相关实体(电话)与当前实体(用户)进行匹配。

如果您查看数据库,我确信您会找到一个带有phone_id列的表用户,尝试将其更改为其他内容(例如仅“电话”),并且您雄辩的请求将崩溃。然后将您的呼叫更改为return $this->hasOne('Phone', 'user_id', 'phone');,这可能会再次起作用。

  • 我不明白你能告诉我这张图片中哪一个是本地密钥吗http://oi61.tinypic.com/2mewz8x.jpg (2认同)