Как преобразовать этот оператор SQL в код laravel? - PullRequest
0 голосов
/ 18 апреля 2019

Итак, у меня есть две таблицы животных и усыновления

Таблица животных содержит [animalID, name, DOB]

Усыновления удерживают [id, animalID, userID, утверждено]

Мне нужно написать заявление, которое бы совпадало с animalID в обеих таблицах и возвращало бы имя и DOB животного, для которого утверждено значение 0.

У меня почти нет опыта работы с mySQL или Laravel, поэтому я предполагаю, что запрос SQL будет выглядеть так:

SELECT animalName, DOB
FROM animal
INNER JOIN
Adoption ON adoption.animalID = animal.animalID
WHERE 
Adoption.approved = 0

В настоящее время я возвращаю всех животных в таблице. Поэтому мне нужно добавить соединение и выполнить проверку, чтобы увидеть, имеет ли animalID в таблице усыновлений значение 0

public function available  ()
{
    //JOIN ANIMAL AND ADOPTION TABLES
    //RETURN ALL ANIMALS WHERE APPROVED = 0


    $animalQuery = Animal::all();



    return view('/available', array('animals'=>$animalQuery));
}

Ответы [ 3 ]

1 голос
/ 18 апреля 2019
public function available  ()
{
    //JOIN ANIMAL AND ADOPTION TABLES
    //RETURN ALL ANIMALS WHERE APPROVED = 0


    $animalQuery = Animal::select('animals.id','animals.name', 'animals.DOB')
        ->join('adoptions', 'adoptions.animalid', '=', 'animals.id')
        ->where('adoptions.approved', 0)
        ->get();



    return view('/available', array('animals'=>$animalQuery));
}

Это мой ответ, который работал для меня

0 голосов
/ 18 апреля 2019

Если у вас есть модель Adoption и отношение adoption в вашей модели Animal, вы можете сделать следующее:

$animals = Animal::select('animalName`, `DOB`)
    ->with(['adoption' => function($query) {
        $query->where('approved', false);
    })->get();
0 голосов
/ 18 апреля 2019

Прежде всего, вам понадобятся две модели.Модель животных и модель усыновления.Laravel использует модели для доступа к вашей таблице базы данных.

Используя модель Animal, вы можете создать запрос, подобный следующему:

\App\Animal::with('adoption')->select('name','dob')->get();

Затем внутри вашей модели Animal вам нужно будет создать отношения между животным и усыновлением:

public function adoption()
{
    return $this->hasOne('App\Animal', 'animalID', 'animalID');
}

Это был бы один из способов получить животное с информацией об усыновлении.

Я действительно рекомендую прочитать документацию Laravel, чтобы выяснить отношения и красноречивость, и, возможно, почитать о некоторых SQL.

https://laravel.com/docs/5.8/eloquent

https://laravel.com/docs/5.8/eloquent-relationships

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...