php - Laravel通过与其属性相同的名称获得 Eloquent 关系

标签 php laravel eloquent laravel-5.2

我有这样的数据库表:

shoot: id, name, programme
programme: id, name

拍摄中 Eloquent 关系定义如下:
public function programme() {
    return $this->belongsTo('App\Programme', 'programme', 'id');
}

使用dd()时,我可以看到它正常工作:
dd(Shoot:where('id','=',1)->with('programme')->first());
// prints the object with programme listed under the relationship

但是,当我渴望加载拍摄并尝试获取程序对象时,我取而代之的是获取拍摄属性“programme”。例如。:
$shoot = Shoot:where('id','=',1)->with('programme')->first();
echo $shoot->programme; // returns 1, not App\Programme object.

是否有解决方案而不必重写大量代码库?

最佳答案

您不应该对 relationshipcolumn 名称使用相同的名称,否则您将始终收到 column 名称,因此请尝试编辑其中之一,我认为这里最简单的是 relationship 名称:

public function programmeObj() {
    return $this->belongsTo('App\Programme', 'programme', 'id');
}

然后将其称为:
echo $shoot->programmeObj;

注意: 但是如果你想遵循约定,你应该用 programme_id 替换 name 属性,所以:
public function programme() {
    return $this->belongsTo('App\Programme', 'programme_id', 'id');
}

希望这可以帮助。

关于php - Laravel通过与其属性相同的名称获得 Eloquent 关系,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41460707/

相关文章:

jquery - 如何修复在 Ajax 上的第二个请求中插入数据库的 0 值?

php - Laravel 正则表达式验证价格或为空

php - Laravel-5 和 Multi-Tenancy 数据库设置

php - SELECT(MAX) SQL 到 Eloquent,无需原始数据

php - Laravel 等效查询字段 +1 插入数据

PHP 5.6 生成器语法 : Can generators only be used in foreach loops?

php - android studio 从数据库MYSQL获取 bool 值

laravel - 方法addEagerConstraints不存在

php - 从 instagram 保存 instagram 高分辨率图像

php - C2DM 服务器出现 PHP 401 错误