1

私はこのテーブルに挿入することができません.これは私を夢中にさせます.これは私が得るエラーメッセージです.

var_export does not handle circular references
open: /var/www/frameworks/Scout/vendor/laravel/framework/src/Illuminate/Database/Connection.php
     * @param  Exception  $e
     * @param  string     $query
     * @param  array      $bindings
     * @return void
     */
    protected function handleQueryException(\Exception $e, $query, $bindings)
    {
        $bindings = var_export($bindings, true);     
        $message = $e->getMessage()." (SQL: {$query}) (Bindings: {$bindings})";

これが私のフルモードです

<?php
 namespace Models;
 use Illuminate\Database\Eloquent\Collection;

  class Student extends \Eloquent
 {
/**
 * The database table used by the model.
 *
 * @var string
 */

protected $table = 'students';


/**
 * The rules used to validate new Entry.
 *
 * @var array
 */
protected $newValidationRules = array(
    'studentCode' => 'unique:students,code|numeric|required',
    'studentName' => 'required|min:2',
    'dateOfBirth' => 'date',
    'mobile' => 'numeric'
);

/**
 * Relation with sessions (Many To Many Relation)
 * We added with Created_at to the Pivot table as it indicates the attendance time
 */
public function sessions()
{
    return $this->belongsToMany('Models\Session', 'student_session')->withPivot('created_at')->orderBy('created_at', 'ASC');
}

/**
 * Get Student Subjects depending on attendance,
 */
public function subjects()
{
    $sessions = $this->sessions()->groupBy('subject_id')->get();
    $subjects = new Collection();
    foreach ($sessions as $session) {
        $subject = $session->subject;
        $subject->setRelation('student', $this);
        $subjects->add($subject);
    }
    return $subjects;
}

/**
 * Insert New Subject
 * @return Boolean
 */

public function insertNew()
{
    $this->validator = \Validator::make(\Input::all(), $this->newValidationRules);


    if ($this->validator->passes()) {
        $this->name = \Input::get('studentName');
        $this->code = \Input::get('studentCode');
        if ($this->save()) {
            return \Response::make("You have registered the subject successfully !");
        } else {
            return \Response::make('An Error happened ');
        }
    } else {
        Return $this->validator->messages()->first();
    }
}

}

3 つの列を持つ新しい行を挿入しようとしています (Student のインスタンスで insertNew 関数を呼び出します) 1- ID が自動的にインクリメントされます 2- 特別なコード 3- 名前 そして、上記のメッセージを取得しました

私が今まで試したことは何ですか:

  1. このモデルと、このモデルをリレーションに持つ他のモデルとの間のすべてのリレーションを削除する
  2. insertNew() の検証ステップを削除しました
  3. すべての Input クラス呼び出しを削除し、代わりにリテラル データを使用しました。

他のモデルでも同様の挿入機能を使用しており、問題なく動作することに注意してください

コメント、返信をお待ちしております:D

解決

私はそれを解決しましたが、問題はバリデーターにアクセスしていることでした

$this->validator = \Validator::make(\Input::all(), $this->newValidationRules);

そして、それは私がそれを忘れていたからです

 /**
     * The validator object.
     *
     * @var Illuminate\Validation\Validator
     */
    protected $validator;
4

1 に答える 1

0

同様の問題がありました。しかし、私には、このコードを変更します:

if ($this->validator->passes()) {
    $this->name = \Input::get('studentName');
    $this->code = \Input::get('studentCode');"

これに:

if ($this->validator->passes()) {
     $this->setAttribute ("name" , \Input::get('studentName'));
     $this->setAttribute ("code" , \Input::get('studentCode'));"

それを解決しました。

于 2013-10-04T20:23:19.177 に答える