Php Laravel Eloquent:Load和With方法导致空集,但在未加载或返回数据的情况下访问属性
在我将一对多关系(组)发送为JSON序列化之前,我试图为一个雄辩的模型(联系人)获取相关记录,但当我尝试使用Php Laravel Eloquent:Load和With方法导致空集,但在未加载或返回数据的情况下访问属性,php,laravel,laravel-5,eloquent,laravel-5.2,Php,Laravel,Laravel 5,Eloquent,Laravel 5.2,在我将一对多关系(组)发送为JSON序列化之前,我试图为一个雄辩的模型(联系人)获取相关记录,但当我尝试使用$query->with('groups')或$contact->load('groups')加载关系时,我得到的是一个空集 :( 联系人类别 <?php namespace App; use Illuminate\Database\Eloquent\Model; class Contact extends Model { protected $hidden = ['c
$query->with('groups')
或$contact->load('groups')
加载关系时,我得到的是一个空集
:(
联系人类别
<?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::with('groups')->where('username', 'test')->first();
这将在使用用户名测试的第一个联系人上加载相关组。您要将添加到联系人模型中,必须在那里定义关系。您向我们显示的是App\ContactGroup
而不是App\contact
。我们可以看到App\contact
吗?抱歉,我更新了代码示例显示App\contact
@Ohgod>为什么…它应该,但它不是。当我将->与('groups')
一起使用时,它会使->groups
成为一个空的数组,通知子句的顺序,与()
是模型上的第一个子句。如上所述,您发布了联系人组模型,但正在查询联系人。请同时发布联系人模型。抱歉,复制了错误的代码(令人尴尬),我将更新问题为什么选择用户名字段作为主键而不是整数?用户名应该是唯一的索引。