【发布时间】:2020-04-09 05:14:11
【问题描述】:
我正在尝试在 laravel 中使用自定义字段加载 hasOne 关系。这是建立在一个已经定义的数据库之上的,所以我不能修改数据库。
我在 sqlserver 2014 和不同架构上都有两个表,所有 PK 和 FK 都是整数。
表格:
表 CursoProgramado (schema dbo):
CursoProgramado(PK) fieldA fieldB
表 silabos (schema sga):
id(PK) fieldC fieldD CursoProgramado(FK)
型号:
CursoProgramado
class CursoProgramado extends Model {
protected $connection = 'sqlsrv';
protected $table = 'CursoProgramado';
protected $primaryKey = 'CursoProgramado';
public function silabo()
{
return $this->hasOne(Silabo::class, 'CursoProgramado', 'CursoProgramado');
}
}
锡拉博
class Silabo extends Model {
protected $connection = 'sqlsrv';
protected $table = 'sga.silabos';
}
控制器,试图让关系发挥作用
$carga = CursoProgramado::findOrFail($carga);
//this return the model correctly
$carga->silabo;
//this should return the related model but returns NULL
// if i get the query log
DB::connection('sqlsrv')->enableQueryLog();
$carga->silabo;
dd(DB::connection('sqlsrv')->getQueryLog());
// i get this
array:1 [▼
0 => array:3 [▼
"query" => "select top 1 * from [sga].[silabos] where [sga].[silabos].[CursoProgramado] = ? and [sga].[silabos].[CursoProgramado] is not null"
"bindings" => array:1 [▼
0 => 147689
]
"time" => 18.59
]
]
//Runnig query
select top 1 * from [sga].[silabos] where [sga].[silabos].[CursoProgramado] = 147689 and [sga].[silabos].[CursoProgramado] is not null;
// it return data
id CursoProgramado consejeria
1933 147689 La consejerÃa y orientación...
不确定是什么原因造成的
【问题讨论】:
标签: php laravel eloquent eloquent-relationship