【发布时间】:2016-12-17 16:04:43
【问题描述】:
我是 Laravel 的新手,正在为此苦苦挣扎:
数据库 - MSSQL 现有数据库架构无法修改,因为其他软件依赖于它。 (不确定这是否有问题)
模型/表设置: INFO_ALL 表 - ID 是主键 PERSON 表 - ID 是外键
ID 是十六进制值,我注意到 eloquent 从值的开头删除了 0x,但不确定这是否会导致关系失败。示例:在数据库中,我在返回的 eloquent 数据中看到 0x123456789,我看到 123456789
人物模型:
<?php
namespace App;
use Illuminate\Database\Eloquent\Model;
class Person extends Model
{
protected $table = 'PERSON';
protected $primaryKey = 'ID';
public $incrementing = false;
public $timestamps = false;
public function info_all(){
return $this->belongsTo(Info_All::class, 'ID', 'ID');
}
}
信息模型:
<?php
namespace App;
use Illuminate\Database\Eloquent\Model;
class Info_All extends Model
{
protected $table = 'INFO_ALL';
protected $primaryKey = 'ID';
public $incrementing = false;
public $timestamps = false;
public function person(){
return $this->hasOne(Person::class, 'ID', 'ID');
}
}
我如何测试这种关系:
php artisan tinker
$person = App\Person::first();
$person->info;
NULL
php artisan tinker
$info= App\Info::first();
$info->person;
NULL
我知道数据库中存在这种关系,我可以通过查询手动将它们组合在一起,但这个框架的关系特性真的很容易弄清楚。
刚接触 Laravel,有几件事我不确定,例如,如果我声明了 $primaryKey,则关系中的第三个参数是否必要。我在第一个模型中声明了 $primarykey,因为我认为它区分大小写并且我的表的 ID 不是 ID。话虽如此,我已经坚持了几天,感觉我已经测试了每种不同组合的所有内容。
感谢任何帮助。
【问题讨论】:
标签: php sql-server laravel-5 model eloquent