Laravel Eloquent:Load和With方法导致空集,但访问属性时没有Load或With返回数据

时间:2017-06-20 16:54:51

标签: php laravel laravel-5 eloquent laravel-5.2

我尝试在将其发送为序列化为JSON之前,为一个雄辩模型(联系人)获取一对多关系(组)的关联记录,但是当我尝试使用{{1 }}或$query->with('groups')我得到一个空集。

:(

联系班级

$contact->load('groups')

然后在Tinker中返回预期的集合:

<?php namespace App; use Illuminate\Database\Eloquent\Model; class Contact extends Model { protected $hidden = ['created_at','updated_at']; protected $primaryKey = 'username'; public $incrementing = false; function groups() { $relation = $this ->belongsToMany('App\Group', 'contact_group', 'username', 'group_id') ->withPivot(["title as title"]); return $relation; } }

但是

\App\Contact::where('username', 'test')->first()->groups

\App\Contact::where('username', 'test')->with('groups')->first()->groups

返回空集。

  • 注意:主键是一个字符串,外键似乎是不同的情况,首字母大写\App\Contact::where('username', 'test')->first()->load('groups')->groups,主键全部为小写Test。然后,这会将问题更改为在不使用testwith
  • 时获取结果的原因

1 个答案:

答案 0 :(得分:0)

尝试以下查询:

\App\Contact::with('groups')->where('username', 'test')->first();

这应该使用用户名测试加载第一次联系人的相关组。