Laravel: How to use where clause on both parent and child model in one to many relation
Table: groups
id name status
Table: items
id group_id name publish
Model: Group
public function items()
return $this->hasMany('AppItem');
Now I want to get all group models where status is running and then all related item models where publish is published.
I do this...
$query = Group::where('status', 'running')->items()->where('publish', 'published')->get();
that shows the following Error Message.
Call to undefined method IlluminateDatabaseEloquentBuilder::items()
What's the wrong?
Is there any way to do this?
Note this EDIT:**How will I get all item models where group model's status is running and item model's publish is published.**
laravel relationship
add a comment |
Table: groups
id name status
Table: items
id group_id name publish
Model: Group
public function items()
return $this->hasMany('AppItem');
Now I want to get all group models where status is running and then all related item models where publish is published.
I do this...
$query = Group::where('status', 'running')->items()->where('publish', 'published')->get();
that shows the following Error Message.
Call to undefined method IlluminateDatabaseEloquentBuilder::items()
What's the wrong?
Is there any way to do this?
Note this EDIT:**How will I get all item models where group model's status is running and item model's publish is published.**
laravel relationship
add a comment |
Table: groups
id name status
Table: items
id group_id name publish
Model: Group
public function items()
return $this->hasMany('AppItem');
Now I want to get all group models where status is running and then all related item models where publish is published.
I do this...
$query = Group::where('status', 'running')->items()->where('publish', 'published')->get();
that shows the following Error Message.
Call to undefined method IlluminateDatabaseEloquentBuilder::items()
What's the wrong?
Is there any way to do this?
Note this EDIT:**How will I get all item models where group model's status is running and item model's publish is published.**
laravel relationship
Table: groups
id name status
Table: items
id group_id name publish
Model: Group
public function items()
return $this->hasMany('AppItem');
Now I want to get all group models where status is running and then all related item models where publish is published.
I do this...
$query = Group::where('status', 'running')->items()->where('publish', 'published')->get();
that shows the following Error Message.
Call to undefined method IlluminateDatabaseEloquentBuilder::items()
What's the wrong?
Is there any way to do this?
Note this EDIT:**How will I get all item models where group model's status is running and item model's publish is published.**
laravel relationship
laravel relationship
edited Nov 13 '18 at 11:16
Md. Harun Or Rashid
asked Nov 13 '18 at 10:22
Md. Harun Or RashidMd. Harun Or Rashid
4711722
4711722
add a comment |
add a comment |
2 Answers
2
active
oldest
votes
You should try this:
$users = Group::whereHas('items', function($q)
$q->where('publish', 'published');
)
->where('status', 'running')
->get();
add a comment |
In your scenario, the query should look like this
$result = Group::whereHas('items', function($query)
$query->where("publish","published");
)
->where("status", "running")
->select('items')
->get();
$result
will have all groups
with status
as running
and all 'items' with publish
status as published
.
This works fine. I could not properly ask my question. My exact question is: How will I get all item models where group model's status is running and item model's publish is published.
– Md. Harun Or Rashid
Nov 13 '18 at 11:18
So you wantitems
out of this query?
– Farooq Khan
Nov 13 '18 at 11:19
yes, that was my real question.
– Md. Harun Or Rashid
Nov 13 '18 at 11:21
I have updated my answer. You have to additems
in yourselect()
and it will only return that.
– Farooq Khan
Nov 13 '18 at 11:23
add a comment |
Your Answer
StackExchange.ifUsing("editor", function ()
StackExchange.using("externalEditor", function ()
StackExchange.using("snippets", function ()
StackExchange.snippets.init();
);
);
, "code-snippets");
StackExchange.ready(function()
var channelOptions =
tags: "".split(" "),
id: "1"
;
initTagRenderer("".split(" "), "".split(" "), channelOptions);
StackExchange.using("externalEditor", function()
// Have to fire editor after snippets, if snippets enabled
if (StackExchange.settings.snippets.snippetsEnabled)
StackExchange.using("snippets", function()
createEditor();
);
else
createEditor();
);
function createEditor()
StackExchange.prepareEditor(
heartbeatType: 'answer',
autoActivateHeartbeat: false,
convertImagesToLinks: true,
noModals: true,
showLowRepImageUploadWarning: true,
reputationToPostImages: 10,
bindNavPrevention: true,
postfix: "",
imageUploader:
brandingHtml: "Powered by u003ca class="icon-imgur-white" href="https://imgur.com/"u003eu003c/au003e",
contentPolicyHtml: "User contributions licensed under u003ca href="https://creativecommons.org/licenses/by-sa/3.0/"u003ecc by-sa 3.0 with attribution requiredu003c/au003e u003ca href="https://stackoverflow.com/legal/content-policy"u003e(content policy)u003c/au003e",
allowUrls: true
,
onDemand: true,
discardSelector: ".discard-answer"
,immediatelyShowMarkdownHelp:true
);
);
Sign up or log in
StackExchange.ready(function ()
StackExchange.helpers.onClickDraftSave('#login-link');
);
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
StackExchange.ready(
function ()
StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2fstackoverflow.com%2fquestions%2f53278823%2flaravel-how-to-use-where-clause-on-both-parent-and-child-model-in-one-to-many-r%23new-answer', 'question_page');
);
Post as a guest
Required, but never shown
2 Answers
2
active
oldest
votes
2 Answers
2
active
oldest
votes
active
oldest
votes
active
oldest
votes
You should try this:
$users = Group::whereHas('items', function($q)
$q->where('publish', 'published');
)
->where('status', 'running')
->get();
add a comment |
You should try this:
$users = Group::whereHas('items', function($q)
$q->where('publish', 'published');
)
->where('status', 'running')
->get();
add a comment |
You should try this:
$users = Group::whereHas('items', function($q)
$q->where('publish', 'published');
)
->where('status', 'running')
->get();
You should try this:
$users = Group::whereHas('items', function($q)
$q->where('publish', 'published');
)
->where('status', 'running')
->get();
answered Nov 13 '18 at 10:32
user10186369
add a comment |
add a comment |
In your scenario, the query should look like this
$result = Group::whereHas('items', function($query)
$query->where("publish","published");
)
->where("status", "running")
->select('items')
->get();
$result
will have all groups
with status
as running
and all 'items' with publish
status as published
.
This works fine. I could not properly ask my question. My exact question is: How will I get all item models where group model's status is running and item model's publish is published.
– Md. Harun Or Rashid
Nov 13 '18 at 11:18
So you wantitems
out of this query?
– Farooq Khan
Nov 13 '18 at 11:19
yes, that was my real question.
– Md. Harun Or Rashid
Nov 13 '18 at 11:21
I have updated my answer. You have to additems
in yourselect()
and it will only return that.
– Farooq Khan
Nov 13 '18 at 11:23
add a comment |
In your scenario, the query should look like this
$result = Group::whereHas('items', function($query)
$query->where("publish","published");
)
->where("status", "running")
->select('items')
->get();
$result
will have all groups
with status
as running
and all 'items' with publish
status as published
.
This works fine. I could not properly ask my question. My exact question is: How will I get all item models where group model's status is running and item model's publish is published.
– Md. Harun Or Rashid
Nov 13 '18 at 11:18
So you wantitems
out of this query?
– Farooq Khan
Nov 13 '18 at 11:19
yes, that was my real question.
– Md. Harun Or Rashid
Nov 13 '18 at 11:21
I have updated my answer. You have to additems
in yourselect()
and it will only return that.
– Farooq Khan
Nov 13 '18 at 11:23
add a comment |
In your scenario, the query should look like this
$result = Group::whereHas('items', function($query)
$query->where("publish","published");
)
->where("status", "running")
->select('items')
->get();
$result
will have all groups
with status
as running
and all 'items' with publish
status as published
.
In your scenario, the query should look like this
$result = Group::whereHas('items', function($query)
$query->where("publish","published");
)
->where("status", "running")
->select('items')
->get();
$result
will have all groups
with status
as running
and all 'items' with publish
status as published
.
edited Nov 13 '18 at 11:22
answered Nov 13 '18 at 10:29
Farooq KhanFarooq Khan
1,53411430
1,53411430
This works fine. I could not properly ask my question. My exact question is: How will I get all item models where group model's status is running and item model's publish is published.
– Md. Harun Or Rashid
Nov 13 '18 at 11:18
So you wantitems
out of this query?
– Farooq Khan
Nov 13 '18 at 11:19
yes, that was my real question.
– Md. Harun Or Rashid
Nov 13 '18 at 11:21
I have updated my answer. You have to additems
in yourselect()
and it will only return that.
– Farooq Khan
Nov 13 '18 at 11:23
add a comment |
This works fine. I could not properly ask my question. My exact question is: How will I get all item models where group model's status is running and item model's publish is published.
– Md. Harun Or Rashid
Nov 13 '18 at 11:18
So you wantitems
out of this query?
– Farooq Khan
Nov 13 '18 at 11:19
yes, that was my real question.
– Md. Harun Or Rashid
Nov 13 '18 at 11:21
I have updated my answer. You have to additems
in yourselect()
and it will only return that.
– Farooq Khan
Nov 13 '18 at 11:23
This works fine. I could not properly ask my question. My exact question is: How will I get all item models where group model's status is running and item model's publish is published.
– Md. Harun Or Rashid
Nov 13 '18 at 11:18
This works fine. I could not properly ask my question. My exact question is: How will I get all item models where group model's status is running and item model's publish is published.
– Md. Harun Or Rashid
Nov 13 '18 at 11:18
So you want
items
out of this query?– Farooq Khan
Nov 13 '18 at 11:19
So you want
items
out of this query?– Farooq Khan
Nov 13 '18 at 11:19
yes, that was my real question.
– Md. Harun Or Rashid
Nov 13 '18 at 11:21
yes, that was my real question.
– Md. Harun Or Rashid
Nov 13 '18 at 11:21
I have updated my answer. You have to add
items
in your select()
and it will only return that.– Farooq Khan
Nov 13 '18 at 11:23
I have updated my answer. You have to add
items
in your select()
and it will only return that.– Farooq Khan
Nov 13 '18 at 11:23
add a comment |
Thanks for contributing an answer to Stack Overflow!
- Please be sure to answer the question. Provide details and share your research!
But avoid …
- Asking for help, clarification, or responding to other answers.
- Making statements based on opinion; back them up with references or personal experience.
To learn more, see our tips on writing great answers.
Sign up or log in
StackExchange.ready(function ()
StackExchange.helpers.onClickDraftSave('#login-link');
);
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
StackExchange.ready(
function ()
StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2fstackoverflow.com%2fquestions%2f53278823%2flaravel-how-to-use-where-clause-on-both-parent-and-child-model-in-one-to-many-r%23new-answer', 'question_page');
);
Post as a guest
Required, but never shown
Sign up or log in
StackExchange.ready(function ()
StackExchange.helpers.onClickDraftSave('#login-link');
);
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
Sign up or log in
StackExchange.ready(function ()
StackExchange.helpers.onClickDraftSave('#login-link');
);
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
Sign up or log in
StackExchange.ready(function ()
StackExchange.helpers.onClickDraftSave('#login-link');
);
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown