我在Laravel应用程序中创建了一个方法来获取我的Queue
模型及其相关的User
模型。
以下是我的Queue.php模型:
class Queue extends Model
{
public function customer()
{
return $this->belongsTo('AppUser');
}
...
我的控制器是这样的:
public function showQueue(Request $request)
{
$key = $request->session()->get('session_key');
return $queue = Queue::where('session_id', $key)->with('customer')->get();
...
当我这样做时,这是我的控制器返回的:
[
{
"id": 37,
"user_id": 2,
"queue_entry_time": "2020-08-09 02:17:07",
"created_at": "2020-08-09T01:17:07.000000Z",
"updated_at": "2020-08-09T01:17:07.000000Z",
"session_id": "ctwr4oqn7v4808oow8sooggosc04wk0",
"customer": null
}
]
customer属性为空,但customer实际上只是一个User(模型(,您可以看到User_ID下存在一个ID,并且数据库中存在一个具有该ID的记录。
为什么customer
属性为空?
可能是因为laravel本身映射不正确。对于您的关系,它将解决为customer_id
,正如官方文件所说:
Eloquent通过检查关系方法的名称并在方法名称后面加上_id来确定默认的外键名称。
因此,您必须设置关系的第二个参数,该参数指定Queue实体的外键的名称。
return $this->belongsTo('AppUser', 'user_id');