我是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
有帮助吗?非常感谢。
您永远不会在代码中加载关系。您可以使用以下方法来完成它:
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-loading