Laravel - возвращает только несколько связей с записями из контроллера или модели - PullRequest
0 голосов
/ 31 марта 2020

Я возвращаю модель со всеми связанными моделями. Моя проблема в том, что, возможно, некоторые модели не имеют записей, поэтому они возвращаются в моей переменной $property как пустые, и я должен оценить их существование в блейде (еще не сделано). Есть ли способ в контроллере или родительской модели, чтобы вернуть только дочерние отношения у которых есть записи? Или какая-нибудь директива лезвия для оценки этих случаев? Все отношения 1: М.

С уважением!

Код контроллера

class PropertyController extends Controller
{
    public function details($id)
    {
        $property = Property::with('attributes', 'addons', 'distributions', 'images', 'attributes_2', 'services')
                    ->where('prop_id', $id)
                    ->first();
        // dd($property);
        return view('pages.processes.offerdemand.matchs.propertymodal', compact('property'));
    }
}

Ответы [ 3 ]

0 голосов
/ 31 марта 2020
class PropertyController extends Controller
{
    public function details($id)
    {
        $relations = ['attributes', 'addons', 'distributions', 'images', 'attributes_2', 'services']
        $property = Property::with($relations)->whereHas($relations)
                    ->where('prop_id', $id)
                    ->first();
        // dd($property);
        return view('pages.processes.offerdemand.matchs.propertymodal', compact('property'));
    }
}
0 голосов
/ 31 марта 2020

РЕШЕНИЕ

Я изменил код следующим образом и получил ожидаемый результат:

public function details($id)
    {
        $property = Property::with(['attributes' => function ($builder) {
            $builder->where('pa_value', '!=', '');
        }])
            ->with('addons', 'distributions', 'images', 'attributes_2', 'services')
            ->where('prop_id', $id)
            ->withCount('attributes', 'addons', 'distributions', 'images', 'attributes_2', 'services')
            ->first();
        dd($property);
        return view('pages.processes.offerdemand.matchs.propertymodal', compact('property'));
    }
0 голосов
/ 31 марта 2020

Сэр, у вас такой же результат с этим кодом? (просто пытаюсь помочь, я новичок в этом мире)

return view('pages.processes.offerdemand.matchs.propertymodal', compact(array('property')));
...