【发布时间】:2018-02-11 22:04:56
【问题描述】:
我在尝试从数据库中获取记录时遇到了一些麻烦。这是表架构:
users
--------------
id
username
password
email
divisions
--------------
id
name
employee
--------------
name
birth_date
status
class
division_id
user_id
projects
--------------
id
title
body
user_id
所以,对于关系解释:
好的,我正在尝试使用以下代码根据 employee 表上的 division_id 获取项目:
# query code
$division_id = 10;
$items = Project::with(['user.employee.division' => function($query) use ($division_id) {
$query->where('id', $division_id);
}])->get();
我已将所需的 belongsTo、hasMany 或 hasOne 添加到模型中。
# User.php
class User extends Authenticatable
{
public function employee()
{
return $this->hasOne('App\Employee', 'user_id');
}
public function projects()
{
return $this->hasMany('App\Project', 'user_id');
}
}
# Division.php
class Division extends Model
{
public function employee()
{
return $this->hasMany('App\Employee', 'division_id');
}
}
# Employee
class Employee extends Model
{
public function user()
{
return $this->belongsTo('App\User', 'user_id');
}
public function division()
{
return $this->belongsTo('App\Division', 'division_id');
}
}
# Project.php
class Project extends Model
{
public function user()
{
return $this->belongsTo('App\User', 'user_id');
}
}
那么,问题出在哪里?
事情是这样的,当我运行查询代码时,我得到了所有记录和员工关系上的部门对象返回 null。
如果有人认为我的代码错了,请赐教。
谢谢。
【问题讨论】:
-
您所期望的输出为我提供了第 10 部门下的所有用户及其项目。
-
当我运行查询代码时,divide_id 上的 where 子句不起作用。结果返回所有部门下的用户及其项目,未经过滤。可能是因为环境?
标签: laravel