Я хочу реализовать слой между моей пользовательской структурой и 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 для других фреймворков, или, по крайней мере, я не могу этого узнать?
Пожалуйста, помогите мне с этим .. дайте мне знать, если вам нужно, чтобы я написал более подробную информацию ...






Вы не можете использовать только построитель запросов. Вы можете посмотреть код 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);
}
Просто используйте where('user_id', $id)->first(), если вы не хотите следовать соглашениям Laravel и просто используете построитель запросов.
Помимо этого, Eloquent Models должен работать так, как вы хотите, но вы не будете использовать Capsule для этих запросов.