Php 在laravel中显示数据库中的一幅图像
我在拉维尔有两张桌子Php 在laravel中显示数据库中的一幅图像,php,laravel,image,Php,Laravel,Image,我在拉维尔有两张桌子 jalans jalan_图像 在一个id_jalan中可以有许多图像,我的关系就是这样 日兰车型 // Model Jalan public function jalanImage() { // return $this->hasMany('App\JalanImage', 'id_jalan'); return $this->hasMany(JalanImage::class, 'id_jalan'); } public functio
- jalans
- jalan_图像
// Model Jalan
public function jalanImage()
{
// return $this->hasMany('App\JalanImage', 'id_jalan');
return $this->hasMany(JalanImage::class, 'id_jalan');
}
public function firstImage()
{
// return $this->hasOne('App\JalanImage', 'id_jalan');
return $this->hasOne(JalanImage::class, 'id_jalan');
}
日航模型
// Model JalanImage
public function jalan()
{
// return $this->belongsTo('App\Jalan', 'id_jalan', 'id');
return $this->belongsTo(Jalan::class, 'id_jalan', 'id');
}
我想在我的控制器中显示诸如title、created_at和每个id_jalan中的第一个图像之类的数据,以显示如下数据
JalanController
// JalanController
public function jalan()
{
$jalan = Jalan::with('firstImage')->orderBy('created_at', 'DESC')->get();
return view('jalan.all', ['jalan' => $jalan]);
// dd($jalan->toArray());
}
在我看来,每个id_jalan的第一个图像都没有显示,我的视图是这样的
刀片视图
@foreach($jalan as $row)
<div class="post-item clearfix">
<table border="0">
<tr>
<td width="170px">
<a href="#">
<img src="{{ asset('uploads/jalan/' .$row->first_image) }}" alt="" class="img-fluid" width="150px"></td>
</a>
<td>
<h4><a href="#">{{ $row->title }}</a></h4>
<i class="icofont-wall-clock"></i> <time>{{ date('d F Y', strtotime($row->created_at)) }}</time>
<p style="color: #F3591F">{{ $row->category }}</p>
</td>
</tr>
</table>
</div>
@endforeach
@foreach($jalan作为$row)
{{date('dfy',strottime($row->created_at))}
{{{$row->category}
@endforeach
当我用dd($jalan->toArray())显示它时在我的控制器中,显示第一个_图像
如何修复它?
谢谢你你应该遵循拉威尔(特别是雄辩家)的建议和命名惯例。这意味着您的
gallery\u图像
表应该有gallery\u id
字段,而不是您的图像。信不信由你,这样你就可以跳过很多非强迫性的错误和问题。我将给你留下我将如何代替你的答案:
// \App\Gallery::class
class Gallery extends Model
{
public function galleryImages()
{
return $this->hasMany(GalleryImage::class);
}
public function firstGalleryImage()
{
return $this->hasOne(GalleryImage::class);
}
}
// \App\GalleryImage::class
class GalleryImage extends Model
{
public function gallery()
{
return $this->belongsTo(Gallery::class);
}
}
基本上,您可以在返回特定关系的模型中设置任意数量的方法。在这里的Gallery::class
中,您可以看到我又设置了一个关系,该关系将只返回该库的第一个图像。在控制器中,您可以用
public function someControllerMethod()
{
$gallery = Gallery::with(['firstGalleryImage'])->first();
// or
$galleries = Gallery::with(['firstGalleryImage'])->get();
}
现在返回的对象
$gallery
或$gallers
的集合将只携带第一个相关图像。在您的情况下(如果您不想更改字段的名称),您需要了解如何将另一个模型的键设置为方法的参数。您应该遵循Laravel(特别是Eloquent)的建议以及关于命名约定的建议。这意味着您的gallery\u图像
表应该有gallery\u id
字段,而不是您的图像。信不信由你,这样你就可以跳过很多非强迫性的错误和问题。我将给你留下我将如何代替你的答案:
// \App\Gallery::class
class Gallery extends Model
{
public function galleryImages()
{
return $this->hasMany(GalleryImage::class);
}
public function firstGalleryImage()
{
return $this->hasOne(GalleryImage::class);
}
}
// \App\GalleryImage::class
class GalleryImage extends Model
{
public function gallery()
{
return $this->belongsTo(Gallery::class);
}
}
基本上,您可以在返回特定关系的模型中设置任意数量的方法。在这里的Gallery::class
中,您可以看到我又设置了一个关系,该关系将只返回该库的第一个图像。在控制器中,您可以用
public function someControllerMethod()
{
$gallery = Gallery::with(['firstGalleryImage'])->first();
// or
$galleries = Gallery::with(['firstGalleryImage'])->get();
}
现在返回的对象
$gallery
或$gallers
的集合将只携带第一个相关图像。在您的情况下(如果您不想更改字段名称),您需要了解如何将另一个模型的键设置为方法的参数。您可以使用Laravel的雄辩ORM(急切加载),
以下是单个图像(图像)和多个图像(媒体)关系的示例
public function media()
{
return $this->hasMany(Media::class, 'foreign_key', 'local_key');
}
public function defaultMedia()
{
return $this->hasOne(Media::class, 'foreign_key', 'local_key');
public function image()
{
return $this->defaultMedia();
}
您可以使用Laravel的雄辩ORM(渴望加载), 以下是单个图像(图像)和多个图像(媒体)关系的示例
public function media()
{
return $this->hasMany(Media::class, 'foreign_key', 'local_key');
}
public function defaultMedia()
{
return $this->hasOne(Media::class, 'foreign_key', 'local_key');
public function image()
{
return $this->defaultMedia();
}
请提供有关如何设置id\u galeri的示例数据。希望不是CSV。请提供如何设置
id\u galeri
的示例数据。希望不是CSV。我一直在关注您的答案,但在我看来,blade无法显示第一张图像。如何在查看刀片中显示firstimage?它是否与“image)}}相同?@Arief来自$gallery->filename的响应是什么?
显示所有数据,只有firstimage不显示。当我显示到dd($galeri->toArray())时,显示的第一个图像中的名称,但我对在blade中显示感到困惑view@Arief$gallery->filename
必须从数据库中获取什么?我将显示标题、创建位置以及连接表galeris和galeri图像中的第一个图像我已经了解了您的答案,但在我看来,blade无法显示第一个图像。如何在查看刀片中显示firstimage?它是否与“image)}}相同?@Arief来自$gallery->filename的响应是什么?
显示所有数据,只有firstimage不显示。当我显示到dd($galeri->toArray())时,显示的第一个图像中的名称,但我对在blade中显示感到困惑view@Arief$gallery->filename
必须从数据库中获取什么?我将显示标题、创建的位置以及联接表galeris和galeri图像中的第一个图像