Skip to content

DOCSP-35970: Find one usage example #2768

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Merged
merged 32 commits into from
Apr 4, 2024
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
32 commits
Select commit Hold shift + click to select a range
ffd9d2c
DOCSP-35970: Find one usage example
norareidy Mar 12, 2024
e92a891
wording edits
norareidy Mar 13, 2024
bf46030
add running instructions
norareidy Mar 13, 2024
6c12f4d
spacing, wording
norareidy Mar 14, 2024
e2145b6
RR feedback
norareidy Mar 15, 2024
e9aa9de
RR feedback 2
norareidy Mar 18, 2024
4c4684d
Merge remote-tracking branch 'upstream/4.1' into DOCSP-35970-find-one…
norareidy Mar 18, 2024
3bcad19
removing tabs, explain view
norareidy Mar 18, 2024
1dc60a6
small edit
norareidy Mar 18, 2024
ab116ce
adding info
norareidy Mar 18, 2024
f6cc811
updates
norareidy Mar 18, 2024
871f721
small fixes
norareidy Mar 18, 2024
70c7014
wording change
norareidy Mar 18, 2024
c6c6e8f
test file
norareidy Mar 25, 2024
c68a476
edits
norareidy Mar 25, 2024
7b2f1dc
moving test file
norareidy Mar 25, 2024
ac545b6
print syntax
norareidy Mar 26, 2024
6b1f418
output format
norareidy Mar 26, 2024
b3c921e
Merge remote-tracking branch 'upstream/4.1' into DOCSP-35970-find-one…
norareidy Mar 26, 2024
35e1dcc
apply phpcbf formatting
norareidy Mar 26, 2024
f5f4a44
code fix
norareidy Mar 26, 2024
c11f0cd
Merge branch 'DOCSP-35970-find-one-usage' of github.com:norareidy/lar…
norareidy Mar 26, 2024
5f58f70
assertion
norareidy Mar 28, 2024
d775d8b
apply phpcbf formatting
norareidy Mar 28, 2024
5bf1b71
method name
norareidy Mar 28, 2024
fc6f15b
Merge branch 'DOCSP-35970-find-one-usage' of github.com:norareidy/lar…
norareidy Mar 28, 2024
bf98e98
Update example test
GromNaN Apr 2, 2024
420e60a
Merge remote-tracking branch 'upstream/4.1' into DOCSP-35970-find-one…
norareidy Apr 3, 2024
901a4e4
Merge branch 'DOCSP-35970-find-one-usage' of github.com:norareidy/lar…
norareidy Apr 3, 2024
a8a6558
add to TOC
norareidy Apr 3, 2024
b75a786
merging
norareidy Apr 3, 2024
4d13dc6
Fix namespace
GromNaN Apr 4, 2024
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
36 changes: 36 additions & 0 deletions docs/includes/usage-examples/FindOneTest.php
Original file line number Diff line number Diff line change
@@ -0,0 +1,36 @@
<?php

declare(strict_types=1);

namespace App\Http\Controllers;

use App\Models\Movie;
use MongoDB\Laravel\Tests\TestCase;

class FindOneTest extends TestCase
{
/**
* @runInSeparateProcess
* @preserveGlobalState disabled
*/
public function testFindOne(): void
{
require_once __DIR__ . '/Movie.php';

Movie::truncate();
Movie::insert([
['title' => 'The Shawshank Redemption', 'directors' => ['Frank Darabont', 'Rob Reiner']],
]);

// begin-find-one
$movie = Movie::where('directors', 'Rob Reiner')
->orderBy('_id')
->first();

echo $movie->toJson();
// end-find-one

$this->assertInstanceOf(Movie::class, $movie);
$this->expectOutputRegex('/^{"_id":"[a-z0-9]{24}","title":"The Shawshank Redemption","directors":\["Frank Darabont","Rob Reiner"\]}$/');
}
}
3 changes: 2 additions & 1 deletion docs/usage-examples.txt
Original file line number Diff line number Diff line change
Expand Up @@ -71,4 +71,5 @@ calls the controller function and returns the result to a web interface.
:titlesonly:
:maxdepth: 1

/usage-examples/updateOne
/usage-examples/findOne
/usage-examples/updateOne
74 changes: 74 additions & 0 deletions docs/usage-examples/findOne.txt
Original file line number Diff line number Diff line change
@@ -0,0 +1,74 @@
.. _laravel-find-one-usage:

===============
Find a Document
===============

You can retrieve a single document from a collection by calling the ``where()`` and
``first()`` methods on an Eloquent model or a query builder.

Pass a query filter to the ``where()`` method and then call the ``first()`` method to
return one document in the collection that matches the filter. If multiple documents match
the query filter, ``first()`` returns the first matching document according to the documents'
:term:`natural order` in the database or according to the sort order that you can specify
by using the ``orderBy()`` method.

Example
-------

This usage example performs the following actions:

- Uses the ``Movie`` Eloquent model to represent the ``movies`` collection in the
``sample_mflix`` database.
- Retrieves 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 ``directors`` field includes ``'Rob Reiner'``.
- ``orderBy()``: sorts matched documents by their ascending ``_id`` values.
- ``first()``: retrieves only the first matching document.

.. io-code-block::

.. input:: ../includes/usage-examples/FindOneTest.php
:start-after: begin-find-one
:end-before: end-find-one
:language: php
:dedent:

.. output::
:language: console
:visible: false

// Result is truncated

{
"_id": "573a1398f29313caabce94a3",
"plot": "Spinal Tap, one of England's loudest bands, is chronicled by film director
Marty DeBergi on what proves to be a fateful tour.",
"genres": [
"Comedy",
"Music"
],
"runtime": 82,
"metacritic": 85,
"rated": "R",
"cast": [
"Rob Reiner",
"Kimberly Stringer",
"Chazz Dominguez",
"Shari Hall"
],
"poster": "https://m.media-amazon.com/images/M/MV5BMTQ2MTIzMzg5Nl5BMl5BanBnXkFtZTgwOTc5NDI1MDE@._V1_SY1000_SX677_AL_.jpg",
"title": "This Is Spinal Tap",
...
}


For instructions on editing your Laravel application to run the usage example, see the
:ref:`Usage Example landing page <laravel-usage-examples>`.

.. tip::

To learn more about retrieving documents with {+odm-short+}, see the
:ref:`laravel-fundamentals-retrieve` guide