Php Laravel Eloquent:Load和With方法导致空集,但在未加载或返回数据的情况下访问属性

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

在我将一对多关系(组)发送为JSON序列化之前,我试图为一个雄辩的模型(联系人)获取相关记录,但当我尝试使用
$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
成为一个空的数组,通知子句的顺序,
与()
是模型上的第一个子句。如上所述,您发布了联系人组模型,但正在查询联系人。请同时发布联系人模型。抱歉,复制了错误的代码(令人尴尬),我将更新问题为什么选择用户名字段作为主键而不是整数?用户名应该是唯一的索引。