Отношение модели не обновлено - PullRequest
0 голосов
/ 25 августа 2018

Я создал сообщение от автора, и я запускаю прослушиватель событий, когда автор достигает X сообщений, поэтому я делаю что-то вроде:

$author = Author::where('author_id', Auth::user()->id)->first()
$post = new Tip();
$post->author_id = $author->id;
...
$post-save();

Так что теперь представьтечто у меня уже было 5 сообщений до этого предыдущего сохранения, теперь у меня должно быть 6;

Но когда я вызываю метод модели от автора:

dd(sizeof($author->posts));

Это дает мне 5, и я могупредставьте, что это потому, что сообщение было сохранено до того, как экземпляр был создан из $ author, но я ожидал создать запрос, когда позвонил «$ author-> posts» и дал мне текущие результаты.

Можеткто-то скажет мне, что не так, и если у Laravel есть подход к этим ситуациям, кроме создания одного нового экземпляра после сохранения и получения длины сообщений?

Ответы [ 2 ]

0 голосов
/ 25 августа 2018

Если приведенный выше код выполняется в одном и том же запросе, то существующий объект $ author может не знать о новом $ post, если он был сохранен так, как вы описали.

Вы можете сохранить через отношение , что обновит знания автора о $ $, например

$author = Author::findOrFail(Auth::id());
$post = new Post(['message' => 'A new post.']);
$author->posts()->save($post);
dd($author->posts()->count());
0 голосов
/ 25 августа 2018

Может быть, это потому, что где-то, где вы запускали $author->posts до сохранения, сообщения извлекались и кэшировались до тех пор, пока скрипт php не завершит выполнение.

, чтобы убедиться, что вы получили последние изменения, попробуйте выполнить запрос еще раз,это:

dd(sizeof($author->posts()->get()));

...