Метод push
Метод push применяется к экземпляру модели Eloquent
и сохраняет не только саму модель, но и все её связанные
отношения, которые были изменены. Это удобно, когда
необходимо обновить родительскую модель и сразу все её
зависимые дочерние записи. Метод не принимает параметров
и возвращает bool - успешность выполнения операции.
Синтаксис
<?php
Model::push();
?>
Пример
Давайте сохраним пользователя и все его посты:
<?php
namespace AppHttpControllers;
use AppModelsUser;
use AppModelsPost;
class UserController extends Controller
{
public function saveUserWithPosts()
{
$user = User::find(1);
$user->name = 'New Name';
foreach ($user->posts as $post) {
$post->title = 'Updated Title';
}
$res = $user->push();
echo "Operation status: " . ($res ? 'true' : 'false');
}
}
?>
Результат выполнения кода:
"Operation status: true"
Пример
Давайте создадим нового пользователя и добавим к нему несколько комментариев:
<?php
namespace AppHttpControllers;
use AppModelsUser;
use AppModelsComment;
class CommentController extends Controller
{
public function createUserWithComments()
{
$user = new User();
$user->name = 'John Doe';
$user->email = 'john@example.com';
$comments = [
new Comment(['text' => 'First comment']),
new Comment(['text' => 'Second comment']),
];
$user->comments()->saveMany($comments);
$res = $user->push();
echo "User and comments saved: " . ($res ? 'true' : 'false');
}
}
?>
Результат выполнения кода:
"User and comments saved: true"
Пример
Давайте обновим статью и все её теги:
<?php
namespace AppHttpControllers;
use AppModelsArticle;
use AppModelsTag;
class ArticleController extends Controller
{
public function updateArticleWithTags()
{
$article = Article::with('tags')->find(2);
$article->title = 'New Article Title';
foreach ($article->tags as $tag) {
$tag->name = 'Updated Tag ' . $tag->id;
}
$res = $article->push();
echo "Article and tags updated: " . ($res ? 'true' : 'false');
}
}
?>
Результат выполнения кода:
"Article and tags updated: true"