Laravel中hasMany和belongsToMany之间的关系

时间:2015-07-28 18:46:59

标签: php laravel laravel-5

我有两个模型 - InternalNotesThread和InternalNotes

class InternalNotesThread extends Model {

public function notes(){

        return $this->hasMany('App\InternalNotes', 'thread_id', 'id');
    }
}

class InternalNotes extends Model {

public function thread() {

        return $this->belongsTo('App\InternalNotesThread');
    }
public function users()
    {
        return $this->belongsToMany('App\User', 'user_notes_tagged', 'internal_notes_id', 'user_id');
    }
}

此外,InternalNotes映射到User,关系为belongsToMany。

数据库结构:

internal_notes_thread:
id - int
ticket_id (FK) - int
name - string

internal_notes:
id - int
thread_id (FK) - int
notes - string

user_notes_tagged: (Many to many with internal_notes and User)
internal_notes_id (FK) - int
user_id (FK) - int

对于每个笔记,可能会有一些用户标记。

如何直接将此关系与internal_notes_thread ???

联系起来

我用这个获得数据:

$data = InternalNotesThread::with('notes')->where('ticket_id', '=', $id)->get()->toArray();

但是,在 notes 数组中,我无法在该笔记中标记用户

如何一次性获取所有数据?

1 个答案:

答案 0 :(得分:3)

您并不急于加载用户,因此他们不会显示在您的->toArray()数组中。

试试这个:

$data = InternalNotesThread::with('notes.users')
    ->where('ticket_id', '=', $id)
    ->get()
    ->toArray();