Есть ли способ сопоставить имена полей в базе данных с другим именем атрибута в модели? Например, если в базе данных есть имя поля customer_id
но я хотел использовать красноречивый таким образом Customer::get(['id'])
Я попытался использовать метод getAttribute, но вызван после того, как красноречивый попытался получить Значение.
Вы можете использовать аксессоров для работы с такими атрибутами, но нет способа запросить их таким образом с ключевым красноречием.
Но не бойся! Используйте этот пакет https://github.com/jarektkaczyk/eloquence, и вы можете легко достичь того, чего хотите (в частности, для Mappable
):
// Customer model protected $maps =[ 'id' => 'customer_id', 'name' => 'customer_name', ... ]; // then you can do this: $customer = Customer::where('name', 'whatever')->first(); // calls WHERE customer_name = ? sql $customer->id; // customer_id column $customer->name; // customer_name column $customer->name = 'different name'; // set mutator works as well
на// Customer model protected $maps =[ 'id' => 'customer_id', 'name' => 'customer_name', ... ]; // then you can do this: $customer = Customer::where('name', 'whatever')->first(); // calls WHERE customer_name = ? sql $customer->id; // customer_id column $customer->name; // customer_name column $customer->name = 'different name'; // set mutator works as well
на// Customer model protected $maps =[ 'id' => 'customer_id', 'name' => 'customer_name', ... ]; // then you can do this: $customer = Customer::where('name', 'whatever')->first(); // calls WHERE customer_name = ? sql $customer->id; // customer_id column $customer->name; // customer_name column $customer->name = 'different name'; // set mutator works as well
Он находится в тяжелом развитии, и в настоящее время select
еще не поддерживается , но это вопрос дня или двух.select
поддержку уже нажата.