sql-server - Laravel 关系总是返回空数组
问题描述
我在 Laravel 应用程序中有两个模型Ft
,Fi
.
Ft
包含以下代码:
protected $table = 'ft';
protected $connection = 'XXX';
protected $keyType = 'string';
public function lines()
{
return $this->hasMany('App\Fi', 'ftstamp', 'ftstamp');
}
Fi
包含以下代码:
protected $table = 'fi';
在我的控制器中,我有以下代码
Ft::select($fields)->with(['lines'])
所有结果都有"lines": []
关系存在于数据库中。
数据库是 SQL Server
ft.ftstamp
并且fi.ftstamp
字段是 type char
。
用于连接的驱动程序是sqlsrv
.
解决方案
我确定这是重复的,但我找不到。如果您只从表中选择某些字段,请确保主键是其中之一。急切加载是作为单独的查询完成的,而不是连接,因此键值必须可用。
例如,这段代码:
User::select(["id", "name"])->with("posts")->get();
运行两个数据库查询:
SELECT id, name FROM users;
SELECT * FROM posts WHERE user_id IN (?, ?, ?, ?...);
第二个查询填充了id
第一个查询的值。如果没有这些值,则无法运行第二个查询。
在普通数据库中,这意味着确保数组$fields
包含“id”作为元素,我将提供一个代码示例。但是,您的数据库看起来很可怕,所以我不会尝试。
推荐阅读
- javascript - React - 搜索组件以过滤数组
- excel - 将水平数据插入垂直格式
- javascript - 使 typescript 函数可用于窗口命名空间
- c# - .net使用winscp将文件从windows移动到linux
- json - 在 SQL Server 中更新/删除 JSON 数组值
- asp.net - Nhibernate QueryOver 如何使此查询使用异步?
- javascript - then promise 方法后返回数组变量数据?
- android - Recyclerview 不检索数据
- javascript - 追加产品`添加到购物车`后不起作用
- influxdb - Chronograf 无法使用自动加载任务隐式和显式指定 dbrp