We have moved our forum to GitHub Discussions. For questions about Phalcon v3/v4/v5 you can visit here and for Phalcon v6 here.

Change row after JOIN / Изменение строки после JOIN

I want get 1 row from two tables, ex:

SELECT * FROM Users LEFT JOIN UsersAccounts WHERE UsersAccounts.guid = 'abcd'

and after change UsersAccounts row, like ... $result->UsersAccounts->accepted = 1 $result->UsersAccounts->save();

It's possible? Can some body write an example, please?

= = = = = = = Я хочу сделать выборку из 2х таблиц, например:

SELECT * FROM Users LEFT JOIN UsersAccounts WHERE UsersAccounts.guid = 'abcd'

и после изменить запись UsersAccounts, типа: ... $result->UsersAccounts->accepted = 1 $result->UsersAccounts->save();

Это возможно? Может кто-то написать как это возможно, пожалуйста?

Делаешь через RAW SQL или PHQL?

@xboston, вот пример на lithium фрейворке https://paste.laravel.com/191H я хочу сделать тоже самое на phalcon здесь 1 select + 1 update, у меня такое не получилось Я пробовал по всякому: 1) https://paste.laravel.com/191n 2) ->execute(), ->getFirst() и другое 3) и через builder и что угодно... заметил что если добавляешь ->column(*) дамп $userEmails становится совсем не понятным https://paste.laravel.com/191P возможно вы можете помочь решить мою задачу, набросав небольшой пример?

А связи в таблицах указаны? По сути всё будет работать так же: При условии что в UsersEmails указано:

 $this->hasMany("id", "Users", "user_id");
...
$userEmails = UsersEmails::findFirst(.....);
$userEmails->Users->name = 'NewName';
$userEmails->Users->save();

В Users тут будет полноценный объект пользователя, созданных аналогично Users::findFirst(...) Полный доки по связям тут https://docs.phalcon.io/en/latest/reference/models.html#relationships-between-models и на русском https://docs.phalconphp.ru/ru/latest/reference/models.html#id8

@boston связи указаны - с этим все ок, возможно ли в phalcon реализовать задачу с помощью одного запроса с JOIN? У меня не получилось, в том числе и с консультациями на #phalconphp канале

Нашёл похожее в PHQL: https://docs.phalcon.io/en/latest/reference/phql.html#joins

$phql = "SELECT Cars.*, Brands.* FROM Cars, Brands WHERE Brands.id = Cars.brands_id";
$rows = $manager->executeQuery($phql);
foreach ($rows as $row) {
    echo "Car: ", $row->cars->name, "\n";
    echo "Brand: ", $row->brands->name, "\n";
}

Про изменения данных объекта таким способом не нашёл точного примера -(