Столбец ошибок не найден, но я не объявлял столбец?

#laravel

#ларавель

Вопрос:

Я вставляю запись в полиморфную таблицу с возможностью отображения, однако в ней указано, что столбец thread_id не найден. Я не объявлял этот столбец thread_id и не знаю, откуда он его извлекает. Вот код, который он пытается запустить.

 protected static function bootRecordImage()
    {
        if (auth()->guest()) return;

            foreach (static::getMethodToRecord() as $event) {

            static::$event(function ($model) use ($event) {
                $body = request()->body;

                preg_match_all('/<img .*?(?=src)src="([^"] )"/si', $body, $matches);
            
                $images = $matches[1];

                if($event == 'created') {
                    foreach ($images as $image) {
                        $model->images()->create([
                            'user_id' => auth()->id(),
                            'imageable_id' => $model->id,
                            'imageable_type' => get_class($model),
                            'path' => $image
                        ]);
                    }
                }
                if($event == 'deleting') {
                    foreach ($images as $image) {
                        $model->images()->delete([
                            'user_id' => auth()->id(),
                            'imageable_id' => $model->id,
                            'imageable_type' => get_class($model),
                            'path' => $image
                        ]);
                        if (File::exists(public_path($image))) {
                            File::delete(public_path($image));
                        }
                    }
                }
            });
        }
    }
 

Мой метод хранения:

 public function store(Request $request, Channel $channel, Spam $spam)
    {
        if (!auth()->user()) {
            return back()->withInput()->with('flash', 'Sorry! You must be logged in to perform this action.');
        }
        if (!auth()->user()->confirmed) {
            return back()->withInput()->with('flash', 'Sorry! You must first confirm your email address.');
        }

        $this->validate($request, [
            'title' => 'required',
            'body' => 'required',
            'channel_id' => 'required|exists:channels,id',
            'g-recaptcha-response' => 'required'
            // yes it's required, but it also needs to exist on the channels model, specifically on the id
        ]);

        $response = Zttp::asFormParams()->post('https://www.google.com/recaptcha/api/siteverify', [
            'secret' => config('services.recaptcha.secret'),
            'response' => $request->input('g-recaptcha-response'),
            'remoteip' => $_SERVER['REMOTE_ADDR']
        ]);

        // dd($response->json());
        if (! $response->json()['success']) {
            throw new Exception('Recaptcha failed');
        }

        $spam->detect(request('title'));
        $spam->detect(request('body'));

        $thread = Thread::create([
            'user_id' => auth()->id(),
            'channel_id' => request('channel_id'),
            'title' => request('title'),
            'body' => request('body'),
            //'slug' => str_slug(request('title'))
        ]);

        return redirect('/forums/' .  $thread->channel->slug . '/' . $thread->slug);
    }
 

Как вы можете видеть, нигде не упоминается thread_id , однако в ошибке похоже, что он пытается вставить в столбец thread_id, который я никогда не объявлял.

Спасибо за чтение.

Ответ №1:

Я ввел полиморфное отношение в модель и признак. Удалите его из модели, и все готово.