Я играю с моделями Laravel, и мне нужно вернуть значение, которое не находится в таблице db, но оно выполняется путем запуска метода модели. Этот метод выполняет запрос, который группирует и подсчитывает сгруппированные результаты.Невозможно присвоить значение переменной в конструкторе модели
Метод модель прекрасно работает, но я, кажется, не быть в состоянии предварительно заполнить переменную $ количество в конструкторе с чем-то другом, чем 0.
Так что это отрывок из модели:
public $quantity;
function __construct($attributes = array(), $exists = false) {
parent::__construct($attributes, $exists);
$this->quantity = $this->quantity();
}
public function quantity()
{
$query = DB::table('carts_shopping')
->select('cart_id', DB::raw('COUNT(*) AS quantity'))
->where('cart_id',$this->cart_id)
->groupBy('cart_id')
->first();
return ($query) ? $query->quantity : 0;
}
Хотя это, как я пытаюсь получить результаты от контроллера:
$cartitems = Auth::user()->cartshopping;
foreach ($cartitems as $cartitem)
{
echo $cartitem->name;
echo $cartitem->quantity;
}
как вы можете догадаться «cartshopping» происходит от модели пользовательского существа относятся d с выдержкой модели, которую я вставил.
Я также заметил, что метод amount() вызывается и он возвращает 0 все время, как будто $ this-> cart_id пуст и, изменяя $ this-cart_id с реальным значением, сам запрос даже не выполняется ,
Большое спасибо за любое предложение, которое вы, ребята, можете разделить.
Вы пробовали var_dump ($ query); как раз перед возвращением? Он может не содержать того, что, по вашему мнению, он делает, или может быть на самом деле равен 0. – vascowhite
Только что попробовал: к сожалению, dd ($ query); возвращает NULL. Та же настройка результатов -> где ('cart_id', 23) с '23' - известное значение. –
Тогда ваш запрос не возвращает никаких результатов. – vascowhite