Skip to content

[5.0] The findOrFail method should throw an error when any model is missing #7048

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 1 commit into from
Jan 20, 2015

Conversation

JosephSilber
Copy link
Contributor

#7043

Model::findOrFail([1, 2]);

will now throw a ModelNotFoundException if any of the requested IDs don't exist.

@JosephSilber JosephSilber changed the title findOrFail should throw an error when any model is missing [5.0] The findOrFail method should throw an error when any model is missing Jan 19, 2015
@Anahkiasen
Copy link
Contributor

👍

taylorotwell added a commit that referenced this pull request Jan 20, 2015
[5.0] The findOrFail method should throw an error when any model is missing
@taylorotwell taylorotwell merged commit 7dd7e35 into laravel:master Jan 20, 2015
@JosephSilber JosephSilber deleted the findOrFail-many branch January 20, 2015 15:19
sebdesign added a commit to sebdesign/framework that referenced this pull request Oct 16, 2019
I found a regression in laravel#7048 and laravel#19019, where the Eloquent Builder will not throw a `ModelNotFoundException` when an `Arrayable` is passed to `findOrFail`.

In this laravel#7048, we are checking if the `$ids` is an array and we count the results against the number of ids.

But since laravel#19019, the `find` method also accepts an `Arrayable` for the ids.

So if an `Arrayable` is passed, the check is skipped and the method returns the results.

To fix this, we are first checking if the `$ids` is an  `Arrayable` and we convert the ids to an array before checking the results.
sebdesign added a commit to sebdesign/framework that referenced this pull request Oct 16, 2019
…ptions

The regression in laravel#7048 and laravel#19019 is also observed in laravel#9143, because the `find`,  `findMany` and `findOrFail` methods are copied from the Eloquent Builder to the `BelongsToMany` and `HasManyThrough` relations.

For this reason, we need to convert the passed ids to an array before executing the queries.
sebdesign added a commit to sebdesign/framework that referenced this pull request Oct 16, 2019
The regression in laravel#7048 and laravel#19019 is also observed in laravel#9143, because the `find`,  `findMany` and `findOrFail` methods are copied from the Eloquent Builder to the `BelongsToMany` and `HasManyThrough` relations.

For this reason, we need to convert the passed ids to an array before executing the queries.
sebdesign added a commit to sebdesign/framework that referenced this pull request Oct 16, 2019
The regression in laravel#7048 and laravel#19019 is also observed in laravel#9143, because the `find`,  `findMany` and `findOrFail` methods are copied from the Eloquent Builder to the `BelongsToMany` and `HasManyThrough` relations.

For this reason, we need to convert the passed ids to an array before executing the queries.
sebdesign added a commit to sebdesign/framework that referenced this pull request Oct 16, 2019
…regression in laravel#7048 and laravel#19019 is also observed in laravel#9143, because the `find`,  `findMany` and `findOrFail` methods are copied from the Eloquent Builder to the `BelongsToMany` and `HasManyThrough` relations.For this reason, we need to convert the passed ids to an array before executing the queries.
taylorotwell pushed a commit that referenced this pull request Oct 18, 2019
* Ensure Builder::findOrFail with Arrayable throws ModelNotFoundException

I found a regression in #7048 and #19019, where the Eloquent Builder will not throw a `ModelNotFoundException` when an `Arrayable` is passed to `findOrFail`.

In this #7048, we are checking if the `$ids` is an array and we count the results against the number of ids.

But since #19019, the `find` method also accepts an `Arrayable` for the ids.

So if an `Arrayable` is passed, the check is skipped and the method returns the results.

To fix this, we are first checking if the `$ids` is an  `Arrayable` and we convert the ids to an array before checking the results.

* Ensure find* methods on relationships are accepting Arrayable idsThe regression in #7048 and #19019 is also observed in #9143, because the `find`,  `findMany` and `findOrFail` methods are copied from the Eloquent Builder to the `BelongsToMany` and `HasManyThrough` relations.For this reason, we need to convert the passed ids to an array before executing the queries.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
Projects
None yet
Development

Successfully merging this pull request may close these issues.

4 participants