【问题标题】:Laravel Capsule set primary keyLaravel Capsule 设置主键
【发布时间】:2018-08-05 21:56:38
【问题描述】:

我想在我的自定义框架和 Eloquent 之间实现一个层,换句话说,我想使用 Eloquent 作为我框架的 ORM...

我从这个https://github.com/illuminate/database开始

你可以看到看起来很简单,在启动 Eloquent 之后,Capsule 就变成了这样:

Capsule::table('users')->where('votes', '>', 100)->get();

同样的方法应该可以工作:

Capsule::table('users')->find(3);

Eloquent 在哪里找到用户 id=3

但是,如果表的主键设置像 user_id 这样的其他东西会怎样

我知道在 Laravel 中我可以设置模型主键

public $primaryKey = 'user_id';

但不幸的是,这不是我的情况,所以如果 Laravel 开发人员没有为其他开发人员实现一些东西以使 Eloqunet 易于用于其他框架,或者至少我找不到它,我会徘徊吗?

请帮我解决这个问题。如果您需要我写更多详细信息,请告诉我...

【问题讨论】:

    标签: php laravel orm eloquent


    【解决方案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()

    除此之外,Eloquent 模型应该按照您想要的方式运行,但您不会使用 Capsule 进行这些查询。

    【讨论】:

      猜你喜欢
      • 2021-09-26
      • 2018-06-09
      • 1970-01-01
      • 2022-01-12
      • 2011-10-24
      • 2014-02-15
      • 2021-05-12
      • 2016-10-13
      • 2015-01-25
      相关资源
      最近更新 更多