লারাভেল অজানা কলাম 'আপডেট_আট'


160

আমি সবেমাত্র লারাভেল দিয়ে শুরু করেছি এবং আমি নিম্নলিখিত ত্রুটিটি পেয়েছি:

অজানা কলাম 'আপডেটড্যাট' জিব্রুয়ার্সে প্রবেশ করান (নাম, ওয়াচওয়ার্ড, আপডেট_এটি, তৈরি_এটি)

আমি জানি যে ত্রুটিটি টাইমস্ট্যাম্প কলাম থেকে যখন আপনি কোনও টেবিলটি স্থানান্তর করেন তবে আমি updated_atক্ষেত্রটি ব্যবহার করছি না । লারাভেল টিউটোরিয়ালটি অনুসরণ করার সময় আমি এটি ব্যবহার করতাম তবে এখন আমি নিজের জিনিসগুলি (বা তৈরির চেষ্টা) করছি। আমি টাইমস্ট্যাম্প ব্যবহার না করেও এই ত্রুটিটি পেয়েছি। এটি যে জায়গাতে ব্যবহৃত হচ্ছে তা আমি খুঁজে পাচ্ছি না। এই কোড:

নিয়ামক

public function created()
{
    if (!User::isValidRegister(Input::all())) {
        return Redirect::back()->withInput()->withErrors(User::$errors);
    }

    // Register the new user or whatever.
    $user = new User;
    $user->naam = Input::get('naam');
    $user->wachtwoord = Hash::make(Input::get('password'));
    $user->save();

    return Redirect::to('/users');
}

রুট

Route::get('created', 'UserController@created');

মডেল

public static $rules_register = [
    'naam' => 'unique:gebruikers,naam'
];

public static $errors;
protected $table = 'gebruikers';

public static function isValidRegister($data)
{
    $validation = Validator::make($data, static::$rules_register);

    if ($validation->passes()) {
        return true;
    }

    static::$errors = $validation->messages();

    return false;
}

আমি অবশ্যই কিছু ভুলে যাচ্ছি ... এখানে আমি কী ভুল করছি?


আপনার টেবিলটি পরীক্ষা করুন যদি আপনার কলাম আপডেট_এটি থাকে !
মেহেদী মাগরোনি

@ মেহেদীমাগ্রুনি
লোকো

এবং এটি সমস্যা, আপনি কলামটি অ্যাক্সেস করতে চান যা এমনকি বিদ্যমান নেই। কোনওটি যোগ করতে আপনি আপনার টেবিলটি পরিবর্তন করতে হবে, বা কেবল এটি সরাতে পারেন।
ইয়াং

@ বাডবয় আমি আমার কোডের কোথাও আপডেটড্যাট ব্যবহার করছি না।
লোকো

@ বাডবয় আমাকে ঠিক মডেলটিতে টাইমস্ট্যাম্পগুলি মিথ্যাতে রেখেছি ...
লোকো

উত্তর:


426

মডেলটিতে, নীচের কোডটি লিখুন;

public $timestamps = false;

এটি কাজ করবে।

ব্যাখ্যা: ডিফল্টরূপে লারাভেলটি আপনার টেবিলের তৈরি_টায় & আপডেট হওয়া_কলামটি আশা করবে। এটি মিথ্যা বানিয়ে তা ডিফল্ট সেটিংসকে ওভাররাইড করে।


7
@RameshPareek এটা বিবৃত করা হয় ডক্স :By default, Eloquent expects created_at and updated_at columns to exist on your tables. If you do not wish to have these columns automatically managed by Eloquent, set the $timestamps property on your model to false
আদম

যদি না এটি নিরীক্ষণের উদ্দেশ্যে না হয়, তবে কেন এটি শুরু হওয়া প্রয়োজন তা আমি দেখছি না, সম্ভবত ডিফল্টরূপে বন্ধ করা উচিত এবং বিকল্প হিসাবে সক্রিয় করা উচিত।
ওজজি দ্য জায়ান্ট

24

মিথ্যাতে টাইমস্ট্যাম্প সেট করার অর্থ আপনি তৈরি করা_আউট এবং আপডেটড_এই উভয়ই হারাতে যাচ্ছেন যেখানে আপনি আপনার মডেলের দুটি কীটি সেট করতে পারবেন।

মামলা 1:

আপনার created_atকলাম রয়েছে তবে আপডেট নেই_ আপনি কেবল updated_atআপনার মডেলটিতে মিথ্যাতে সেট করতে পারেন

class ABC extends Model {

const UPDATED_AT = null;

কেস 2:

আপনার উভয় created_atএবং updated_atকলাম রয়েছে তবে বিভিন্ন কলামের নাম রয়েছে

আপনি সহজভাবে করতে পারেন:

class ABC extends Model {

const CREATED_AT = 'name_of_created_at_column';
const UPDATED_AT = 'name_of_updated_at_column';

অবশেষে টাইমস্ট্যাম্পগুলি সম্পূর্ণ উপেক্ষা:

class ABC extends Model {

public $timestamps = false;

3
এটি সঠিক উত্তর হওয়া উচিত। টাইমস্ট্যাম্প সেট করা উভয় ক্ষেত্রকে সরিয়ে দেয়। ধন্যবাদ !!!
সামিরা কে

3
প্রশ্নটিতে প্রদর্শিত ত্রুটিটিতে সদ্য আপডেট হওয়া ক্ষেত্রের কারণে এটি সঠিক উত্তর।
আন্দ্রেস ফিলিপ

1
এই উত্তরটি সেরা
মোজতবা

15

অ্যালেক্স এবং সমীরের চমৎকার উত্তর, তবে কেন প্রয়োজন হয় তা সম্পর্কে কেবল অতিরিক্ত তথ্য

public $timestamps = false;

টাইমস্ট্যাম্পগুলি সরকারী লারাভেল পৃষ্ঠায় সুন্দরভাবে ব্যাখ্যা করা হয়েছে :

ডিফল্টরূপে, স্পষ্টত আপনার> টেবিলগুলিতে তৈরি_আট এবং আপডেট_এ্যাট কলামগুলি উপস্থিত থাকার প্রত্যাশা করে। আপনি যদি এই কলামগুলি স্বয়ংক্রিয়ভাবে> স্বতন্ত্র দ্বারা পরিচালিত করতে চান না, আপনার মডেলটিতে model টাইমস্ট্যাম্পস সম্পত্তিটিকে মিথ্যাতে সেট করুন।


14

যারা 5 বা তদুর্ধের ল্যারাভেল ব্যবহার করছেন তাদের অবশ্যই অন্যান্য বুদ্ধিমান পাবলিক মডিফায়ার ব্যবহার করতে হবে এটি একটি ব্যতিক্রম ছুঁড়ে দেবে

Access level to App\yourModelName::$timestamps must be
public (as in class Illuminate\Database\Eloquent\Model)

public $timestamps = false;
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.