laravel Столбец не найден: 1054 Неизвестный столбец 'image_likes.gallery_image_id' - PullRequest
0 голосов
/ 24 июня 2018

Я получаю следующую ошибку:

Столбец не найден: 1054 Неизвестный столбец 'image_likes.gallery_image_id' в 'предложении where' (SQL: выберите * из image_likes, где image_likes. gallery_image_id в (1) и deleted_at равно нулю, а user_id = 1 и image_likes. deleted_at равно нулю)

всякий раз, когда я добавляю 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 ]

0 голосов
/ 24 июня 2018
public function likedByMe()
{
    return $this->likes()->whereUserId(auth()->id)->count()>0;
}

это не относится к вашей проблеме, но вы можете переписать ваш likedByMe() таким образом, более эффективным способом

0 голосов
/ 24 июня 2018

Измените ваши отношения в модели GalleryImage для likes

public function likes()
{
   return $this->hasMany(ImageLike::class, 'image_id'); //here image_id is reference id of images table to likes table
}

. По умолчанию laravel принимает название вашей модели и _id в качестве внешнего ключа, поэтому он искал gallery_image_id для вашей модели GalleryImage в ImageLike модели.но у вас есть image_id.Поэтому, если у вас есть значение, отличное от значения по умолчанию, укажите его в отношениях.

return $this->hasMany('App\Comment', 'foreign_key', 'local_key');

проверьте подробности здесь

https://laravel.com/docs/5.6/eloquent-relationships#one-to-many

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...