от
Я хочу этот объект, только если он имеет все необходимые отношения. На данный момент мой код: StudentController
$student = Student::with('inscriptions','inscriptions.classroom')
                    

Ученик

public function inscriptions()
{
    return $this

IncribedStudent - Примечание: «Регистрация открыта»

public function classroom()
{
    return $this

Json Return Когда еще не открыта регистрация

{
    "inscriptions": [
        {
            "id": 1,
            "student_id": 1,
            "classroom_id": 1,
            "deleted_at": null,
            "created_at": "2019

Я хочу сделать что-то подобное, потому что мне не нужен объект IncribedStudent, если у меня нет классной комнаты.

public function inscriptions()
{
    return $this
    

        

Ваш ответ

Отображаемое имя (по желанию):
Конфиденциальность: Ваш электронный адрес будет использоваться только для отправки уведомлений.
Анти-спам проверка:
Чтобы избежать проверки в будущем, пожалуйста войдите или зарегистрируйтесь.

1 Ответ

0 голосов
от
Вы можете использовать
has()
или
whereHas()
, чтобы проверить, что классная комната существует. https://laravel.com/docs/5.8/eloquent-relationships#querying-relationship-existence
// this will only get students that have a classroom through inscriptions
$students = Student::has('incriptions.classroom')
                   

Вы также можете создать настраиваемую область для модели Student
, если хотите использовать ее вместо этого.
// this will only get students that have a classroom through inscriptions
public function scopeHasClassroom($query)
{
    $query

Затем вы можете вызвать пользовательскую область следующим образом:

$students = Student::hasClassroom()

https://laravel.com/docs/5.8/eloquent#query-scopes
    
...