Laravel胶囊设置主键

时间:2018-08-05 21:56:38

标签: php laravel orm eloquent

我想在我的自定义框架和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,或者至少我找不到它?

请帮助我。.如果需要我写更多详细信息,请告诉我...

1 个答案:

答案 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。