laravel 6.0 принадлежит компании ApplictaionService - PullRequest
0 голосов
/ 16 января 2020

Я новичок в laravel рамках. Я не мог получить лекарство от работы с ценами в контроллере.

Моя модель;


use Illuminate\Database\Eloquent\Model;

class Medicine extends Model
{
    protected $table    = 'medicine';
    protected $fillable = [];
    protected $guarded  = [];

    public function withPrice()
    {
        return $this->hasMany('App\Models\MedicinePrice', 'medicine_id', 'id');
    }
}

В моем сервисе приложений;

    public function getRecentEntries()
    {
        $medicines = Medicine::orderBy('id','DESC')->take(10)->get()->toArray();
        dd($medicines);
        return $this->formatMedicine($medicines);
    }

Таблица лекарств: https://take.ms/EHrwd Таблица стоимости лекарств: https://take.ms/BMTJW

Любая помощь? Большое вам спасибо.

1 Ответ

3 голосов
/ 16 января 2020

Вы никогда не загружаете отношения в своем коде. Вы можете выполнить sh это с помощью:

Medicine::with('withPrice')->get();

Однако, with('withPrice') звучит немного странно, не так ли? Я бы порекомендовал вам переименовать метод вашего отношения в вашей модели Медицины на что-то более красивое, например prices:

public function prices()
{
    return $this->hasMany(MedicinePrice::class);
}

И тогда вы сможете получить лекарство по ценам, подобным этим:

$medicines = Medicine::with('prices')->orderByDesc('id')->take(10)->get()->toArray();

Подробнее о полной загрузке вы можете прочитать здесь: https://laravel.com/docs/6.x/eloquent-relationships#eager -загрузка

...