Так что я использую laravel, и я сталкиваюсь с проблемой, поэтому у меня есть реляционная модель AdSale, тогда у меня есть эта настройка с отношениями hasOne с AdImpressions. Например, я могу взять все записи AdSale, где userId = 1. Я получаю 5 разных строк, для каждой из этих 5 строк у меня есть 5 строк adImpression, которые соответствуют и имеют информацию о кликах и показах. Моя конечная цель - получить строки AdImpression. Однако, когда я запускаю мой, есть один метод Impressions(), я получаю неопределенный метод. Однако, если я делаю foreach на моих записях AdSale отдельно, а затем запускаю метод Impresssions(), он работает. Так вот мой кодLaravel несколько много для многих отношений?
class AdSale extends Eloquent{
protected $table = 'AdSale';
public function impressions()
{
return $this->hasOne('AdImpression','adSaleId','id');
}
}
Здесь я подключаю мой Adsale к соответствующему AdImpression через adSaleId в таблице AdImpression.
Это то, что я использую в своем контроллере.
$sales= AdSale::where('userId','=', 1)->get();
$impressions = $sales->impressions();
Теперь то, что я ожидаю от этого в том, что мой переменных $ впечатления будет иметь запись AdImpressions, что коррелирует с adSaleId, однако я получаю неопределенную функцию, так как существует множество значений, возвращаемых в $ saleLocation. Если я изменю его на -> frist(); или сделать foreach на $ saleLocation, он работает, но это не сработает. Мне нужно иметь возможность суммировать значения из впечатлений в целом. Любая информация была бы потрясающей.
вы уверены, что 'hasOne' правильное соотношение для' AdSale'? Это звучит скорее как «hasMany», нет? Мой ответ предполагает, что он последний, но, вероятно, даже работает с первым. – luchaos