我收到以下错误:
找不到列:1054'where子句'中的未知列'image_likes.gallery_image_id'(SQL:select * from image_likes其中image_likes.gallery_image_id in(1)and deleted_at为null且user_id = 1且image_likes.deleted_at为null)
每当我添加 function ($query)
.
下面的代码行获取数据,但我需要数据来获取与之对应的相似内容 .
$images = GalleryImage::with('user')->get()
这就是我到目前为止所拥有的 .
ImageLike.php
<?php
namespace App;
use App\GalleryImage;
use App\User;
use Illuminate\Database\Eloquent\Model;
use Illuminate\Database\Eloquent\SoftDeletes;
class ImageLike extends Model
{
use SoftDeletes;
protected $fillable = [
'user_id',
'image_id'
];
}
ImageController.php
public function getImages()
{
$images = GalleryImage::with('user')
->with(['likes' => function ($query) {
$query->whereNull('deleted_at');
$query->where('user_id', auth()->user()->id);
}])->get();
return response()->json($images);
}
GalleryImage.php
<?php
namespace App;
use App\User;
use App\GalleryImage;
use Illuminate\Database\Eloquent\Model;
use Illuminate\Foundation\Auth\User as Authenticatable;
class GalleryImage extends Authenticatable
{
protected $fillable = [
'image_title',
'user_id',
'file_name',
'created_at'
];
protected $table = 'images';
public function user()
{
return $this->belongsTo(User::class);
}
public function likes()
{
return $this->hasMany(ImageLike::class);
}
public function likedByMe()
{
foreach($this->likes as $like) {
if ($like->user_id == auth()->id()){
return true;
}
}
return false;
}
}
2 回答
更改您在模型GalleryImage中的关系
likes
默认laravel假设您的模型名称和_id为外键,因此它在
ImageLike
模型中为您的GalleryImage模型寻找gallery_image_id
但是您有image_id
. 因此,如果您有非默认值,则将其与关系进行特定 .查看详情
https://laravel.com/docs/5.6/eloquent-relationships#one-to-many
这不是关于你的问题,但你可以更有效地重写这样的
likedByMe()