В Laravel 4 у меня есть модель, связывающая таблицу базы данных. Назовем это Model
.Laravel 4 Present Model
Скажите, что эта модель имеет столбец базы данных, называемый Property A
и Property B
.
Когда я делаю получить запрос вызова к моей модели, т.е. Model::all()
или Model::find($id)
, я не хочу возвращаться Property A
или Property B
, но какой-то функции из двух, которая появляется на переднем конце, как своего рода только для чтения, то есть Property C
.
Нужно ли использовать библиотеку ведущего здесь, или есть способ переопределить функции модели в Laravel 4?
Ключ для меня здесь является то, что свойство проявляется, когда я звоню Model::all()
EDIT:
В моем понимании это должно вернуть атрибут с именем foo
постоянно со значением "foo"
:
Модель
class DiscountLink extends Eloquent {
protected $table = 'discountLinks';
protected $hidden = array('tag');
protected $fillable = array('name', 'currency', 'language', 'price', 'instalments', 'expires', 'active', 'foo');
public function getFooAttribute()
{
return "foo";
}
}
Контроллер
class DiscountLinkController extends \BaseController {
public function index()
{
return DiscountLink::all();
}
}
Должно ли 'propertyC' появляться, когда я называю' Model :: all() '? – iamyojimbo
Да, когда вы просматриваете результаты для доступа к отдельным строкам. Поэтому, если вы вызвали '$ model = Model :: all()', тогда у вас есть доступ к 'propertyC' внутри' foreach ($ model ad $ m) {var_dump ($ m-> propertyC)}; '. Кроме того, убедитесь, что значение в атрибутах '$ this-> ['']' является фактическим именем поля в вашей базе данных; он чувствителен к регистру, поэтому, если ваш столбец называется 'property_a', то accessor должен ссылаться на' $ this-> attributes ['property_a']; ' – damiani
Скажите, что у меня есть эта функция:' public function getFooAttribute() { return "goooglelelgoo"; } 'Тогда должно ли я всегда иметь свойство Foo, возвращаемое? – iamyojimbo