diff --git a/docs/includes/usage-examples/Movie.php b/docs/includes/usage-examples/Movie.php new file mode 100644 index 000000000..728a066de --- /dev/null +++ b/docs/includes/usage-examples/Movie.php @@ -0,0 +1,12 @@ + 'Carol', + 'imdb' => [ + 'rating' => 7.2, + 'votes' => 125000, + ], + ], + ]); + + // begin-update-one + $updates = Movie::where('title', 'Carol') + ->orderBy('_id') + ->first() + ->update([ + 'imdb' => [ + 'rating' => 7.3, + 'votes' => 142000, + ], + ]); + + echo 'Updated documents: ' . $updates; + // end-update-one + + $this->assertTrue($updates); + $this->expectOutputString('Updated documents: 1'); + } +} diff --git a/docs/usage-examples.txt b/docs/usage-examples.txt index bf14bba4a..08dda77ea 100644 --- a/docs/usage-examples.txt +++ b/docs/usage-examples.txt @@ -65,4 +65,10 @@ a result. To run the operation, you can copy the sample code to a controller end Laravel application. To view the expected output of the operation, you can add a web route to your application that -calls the controller function and returns the result to a web interface. \ No newline at end of file +calls the controller function and returns the result to a web interface. + +.. toctree:: + :titlesonly: + :maxdepth: 1 + + /usage-examples/updateOne \ No newline at end of file diff --git a/docs/usage-examples/updateOne.txt b/docs/usage-examples/updateOne.txt new file mode 100644 index 000000000..f60bd3bad --- /dev/null +++ b/docs/usage-examples/updateOne.txt @@ -0,0 +1,67 @@ +.. _laravel-update-one-usage: + +================= +Update a Document +================= + +.. facet:: + :name: genre + :values: reference + +.. meta:: + :keywords: update one, modify, code example + +.. contents:: On this page + :local: + :backlinks: none + :depth: 1 + :class: singlecol + +You can update a document in a collection by retrieving a single document and calling +the ``update()`` method on an Eloquent model or a query builder. + +Pass a query filter to the ``where()`` method, sort the matching documents, and call the +``first()`` method to retrieve only the first document. Then, update this matching document +by passing your intended document changes to the ``update()`` method. + +Example +------- + +This usage example performs the following actions: + +- Uses the ``Movie`` Eloquent model to represent the ``movies`` collection in the + ``sample_mflix`` database. +- Updates a document from the ``movies`` collection that matches a query filter. + +The example calls the following methods on the ``Movie`` model: + +- ``where()``: matches documents in which the value of the ``title`` field is ``'Carol'``. +- ``orderBy()``: sorts matched documents by their ascending ``_id`` values. +- ``first()``: retrieves only the first matching document. +- ``update()``: updates the value of the ``imdb.rating`` nested field to from ``6.9`` to + ``7.3``. This method also updates the ``imdb.votes`` nested field from ``493`` to ``142000``. + +.. io-code-block:: + :copyable: true + + .. input:: ../includes/usage-examples/UpdateOneTest.php + :start-after: begin-update-one + :end-before: end-update-one + :language: php + :dedent: + + .. output:: + :language: console + :visible: false + + Updated documents: 1 + +For instructions on editing your Laravel application to run the usage example, see the +:ref:`Usage Example landing page `. + +.. tip:: + + To learn more about updating data with {+odm-short+}, see the `Updates + `__ section of the + Laravel documentation. +