Am building a system that works similar to the popular flashcard software called "Anki" and am trying to eager load some answers that belong to a user study, but with some modifications.
Model relationships
User
has manyStudy
Study
has manyAnswer
Here is the code snippet. (Take a look at the second section below)
$user_query = User::with( [
'studies.answers' => function ( $query_answer ) use ( $args ) {
$query_answer
->where( 'grade', '=', 'hold' )
->groupBy( 'card_id' )
->orderByDesc( 'id' );
if ( $args['no_date_limit'] ) {
$query_answer = $query_answer->where( 'next_due_at', '>', $args['start_date'] );
} else {
$query_answer = $query_answer->whereBetween( 'next_due_at', [ $args['start_date'], $args['end_date'] ] );
}
if ( ! empty( $args['card_ids_in'] ) ) {
$query_answer = $query_answer->whereIn( 'card_id', $args['card_ids_in'] );
}
if ( ! empty( $args['card_ids_not_in'] ) ) {
$query_answer = $query_answer->whereNotIn( 'card_id', $args['card_ids_not_in'] );
}
// Here, I want to apply the limit ($study_all_on_hold ) if student.answer_all_on_hold != 1
if ( ! $study_all_on_hold ) {
// And also read the $no_on_hold value from study.no_on_hold
$query_answer = $query_answer->limit( $no_on_hold );
}
},
] )
->where( 'ID', '=', $user_id );
As you can see am trying to apply the limit from the column value of the study. Is this currently possible ?
via Chebli Mohamed
Aucun commentaire:
Enregistrer un commentaire