我想在我的自定义框架和Eloquent之间实现一层,换句话说,我想将Eloquent用作我的框架的ORM ...
我从这个https://github.com/illuminate/database
开始如您所见,它看起来很简单,在启动Eloquent后,Capsule就可以这样使用:
Capsule::table('users')->where('votes', '>', 100)->get();
同样的方法应该可以做到这一点:
Capsule::table('users')->find(3);
口才找到用户id=3
的地方
但是,如果表主键设置了其他类似user_id
我知道在Laravel中可以设置模型主键
public $primaryKey = 'user_id';
但是不幸的是,这不是我的情况,所以我想知道Laravel开发人员是否没有为其他开发人员实现某些功能,以使其易于在其他框架中使用Eloqunet,或者至少我找不到它?
请帮助我。.如果需要我写更多详细信息,请告诉我...
答案 0 :(得分:1)
您不能仅使用查询生成器。您可以查看Query / Builder.php的代码,并发现find方法是用id硬编码的:
/**
* Execute a query for a single record by ID.
*
* @param int $id
* @param array $columns
* @return mixed|static
*/
public function find($id, $columns = ['*'])
{
return $this->where('id', '=', $id)->first($columns);
}
如果您不想遵循Laravel约定,而只是使用查询生成器,只需使用where('user_id', $id)->first()
。
除此之外,雄辩的模型应该按照您想要的方式运行,但是您不会对这些查询使用Capsule。