может кто-нибудь помочь мне по следующему запросу.Запрос на реляционную базу данных Laravel 4
У меня есть таблица, которая содержит столбец почтового индекса и столбца рейтинга, т.е.
ID | POSTCODE | RATING
1 | sk101dd | E
2 | sk101de | A
3 | sk101df | E
4 | sk101dg | E
5 | sk101dh | D
etc
Это устанавливается как модель называется PostcodeList
У меня есть реляционная таблица, связанная через колонку РЕЙТИНГА, который содержит идентификатор клиента и стоимость, то есть.
ID | CUSTOMER_ID | RATING | COST
1 | 1234 | E | 0.05
2 | 9999 | E | 0.02
Это настраиваемая модель под названием RatingCost. Я связал это с моделью PostcodeList, используя следующий код:
public function costing()
{
return $this->hasMany('PostcodeList','RATING','RATING');
}
мне нужно вернуть COST от модели RatingCost с использованием CUSTOMER_ID в качестве фильтра, не прибегая к нескольким SQL заявления. Я думаю, что я чуть не получил его, используя код, приведенный ниже, но это не совсем верно:
$p = PostcodeList::where('postcode',$somepostcode)->first();
$cost = $p->costing()->where('customer_id',$somecustomerid)->first()->cost;
Ошибка я получаю в данный момент «Попытка получить свойство не-объекта».
Любая помощь очень ценится. Я не хочу прибегать к DBRAW или другой форме присоединения, поскольку мне очень нравится реляционная настройка Laravel.
благодаря
Похоже, вы получаете сообщение об ошибке, потому что почтовый индекс не имеет столбец customer_id. Вы также должны отметить это как php –
Спасибо за ответ. В таблице почтовых индексов не хранится идентификатор клиента, только в таблице RatingCost указано, что будет несколько идентификаторов клиента, связанных с одним и тем же рейтингом, но с разными затратами. Поэтому я, вероятно, объясню это неправильно Laravel, но не могу понять правильный код. – james
Это имеет смысл. Итак, почему вы повторяете список почтовых индексов, чтобы соответствовать идентификатору клиента?Я не знаком с DBRAW, но laravel действительно реализует свои собственные соединения здесь: http://laravel.com/docs/queries#joins –