Допустим, у меня есть 2 модели AR. 1. Payment - платежи 2. Cart - корзина
И соответственно у payment
public function getCarts()
{
return $this->hasMany(Cart::className(), ['payment_id' => 'id']);
}
Задача следующая. Мне необходимо корзину второго платежа слить с корзиной первого.
т.е.
$first_payment = Payment::findOne($first_payment_id);
$second_payment = Payment::findOne($second_payment_id);
И объединяем:
$first_payment->carts = array_merge($first_payment ->carts, $second_payment->carts);
И разумеется при таком подходе я ловлю ошибку:
Setting read-only property: frontend\models\Payment::carts
Что в принципе и логично.
Скажите, как лучше перезаписать это свойство?
foreach ($second_payment->carts as $cart) {
$cart->payment_id = $first_payment_id;
$cart->save();
}
если я правильно понял задачу
use yii\helpers\ArrayHelper;
$first_payment = Payment::findOne($first_payment_id);
$first_array = ArrayHelper::toArray($first_payment,[
'frontend\models\Payment' => [
'carts'=>'Carts',
],
]);
$second_payment = Payment::findOne($second_payment_id);
$second_array = ArrayHelper::toArray( $second_payment,[
'frontend\models\Payment' => [
'carts'=>'Carts',
],
]);
$merge_payment = ArrayHelper::merge( $first_array, $second_array);
в результирующем массиве в ячейке merge_payment['carts'] будет массив с ключами из свойств Carts ,в результате слияния каждый ключ будет содержать массив двух значений.
Виртуальный выделенный сервер (VDS) становится отличным выбором
Подскажите пожалуйста, в приведенном коде, запрос к БД выполняется один раз а потом просто фильтруются данные или 2 запроса?
Как передать значения отмеченных checkbox в url в виде get параметра? В итоге хочу получить примерно такой url: wwwtest
В документации написано, создаем приложение, берем файл и шлем его POST`ом в яндекс и все окПробуем отправить, получаем ошибку 401, "Неавторизованный...
Подскажите пожалуйста, какой подход будет более правильныйМне необходимо данные из таблицы в БД разпихать по разным блокам на странице согласно...