2015-06-21 2 views
-1

Я очень новичок в laravel, но на самом деле я получаю неправильные результаты в таком базовом штате, что я очень смущен.Laravel: ошибочные результаты с моделью :: где

Ну у меня есть таблица:

Schema::create('matches', function(Blueprint $table) 
    { 
     $table->increments('id')->unsigned()->index(); 
     $table->integer('season_id')->unsigned()->index(); 
     $table->foreign('season_id') 
      ->references('id') 
      ->on('seasons') 
      ->onUpdate('cascade') 
      ->onDelete('cascade') 
     ; 
     $table->integer('championship_id')->unsigned()->index(); 
     $table->foreign('championship_id') 
      ->references('id') 
      ->on('championships') 
      ->onUpdate('cascade') 
      ->onDelete('cascade') 
     ; 
     $table->integer('round')->unsigned()->index(); 
     $table->integer('match')->unsigned()->index(); 

     $table->integer('team1_id')->unsigned()->index(); 
     $table->foreign('team1_id') 
      ->references('id') 
      ->on('teams') 
      ->onUpdate('cascade') 
      ->onDelete('cascade') 
     ; 
     $table->integer('team2_id')->unsigned()->index(); 
     $table->foreign('team2_id') 
      ->references('id') 
      ->on('teams') 
      ->onUpdate('cascade') 
      ->onDelete('cascade') 
     ; 

     $table->integer('team1_goals')->unsigned()->nullable()->default(null); 
     $table->integer('team2_goals')->unsigned()->nullable()->default(null); 
     $table->integer('team1_misses')->unsigned()->nullable()->default(null); 
     $table->integer('team2_misses')->unsigned()->nullable()->default(null); 
     $table->timestamp('start_at'); 
     $table->boolean('finished')->default(0); 
     $table->timestamps(); 
    }); 

После некоторой математики его заполнен значениями команд IdS, целей, промахов и т.д. Хорошо, теперь я хочу, чтобы получить все баран, где побеждает team1 (team1_goals> team2_goals)

в ремесленника повозиться I Тип:

$matches = App\Match::where('team1_goals','>','team2_goals')->get() 

и получить столь неожиданные результаты (последние 4):

<App\Match #00000000455ad9a2000000015b65c7f8> { 
     id: 237, 
     season_id: 1, 
     championship_id: 1, 
     round: 30, 
     match: 5, 
     team1_id: 7, 
     team2_id: 10, 
     team1_goals: 2, 
     team2_goals: 1, 
     team1_misses: 2, 
     team2_misses: 2, 
     start_at: "2015-06-21 14:38:22", 
     finished: 1, 
     created_at: "2015-06-21 13:53:52", 
     updated_at: "2015-06-21 13:57:00" 
    }, 
    <App\Match #00000000455ad9dd000000015b65c7f8> { 
     id: 238, 
     season_id: 1, 
     championship_id: 1, 
     round: 30, 
     match: 6, 
     team1_id: 9, 
     team2_id: 12, 
     team1_goals: 2, 
     team2_goals: 2, 
     team1_misses: 1, 
     team2_misses: 1, 
     start_at: "2015-06-21 14:38:22", 
     finished: 1, 
     created_at: "2015-06-21 13:53:52", 
     updated_at: "2015-06-21 13:57:00" 
    }, 
    <App\Match #00000000455ad9dc000000015b65c7f8> { 
     id: 239, 
     season_id: 1, 
     championship_id: 1, 
     round: 30, 
     match: 7, 
     team1_id: 5, 
     team2_id: 16, 
     team1_goals: 1, 
     team2_goals: 3, 
     team1_misses: 0, 
     team2_misses: 0, 
     start_at: "2015-06-21 14:38:22", 
     finished: 1, 
     created_at: "2015-06-21 13:53:52", 
     updated_at: "2015-06-21 13:57:00" 
    }, 
    <App\Match #00000000455ad9df000000015b65c7f8> { 
     id: 240, 
     season_id: 1, 
     championship_id: 1, 
     round: 30, 
     match: 8, 
     team1_id: 8, 
     team2_id: 1, 
     team1_goals: 1, 
     team2_goals: 2, 
     team1_misses: 1, 
     team2_misses: 1, 
     start_at: "2015-06-21 14:38:22", 
     finished: 1, 
     created_at: "2015-06-21 13:53:52", 
     updated_at: "2015-06-21 13:57:00" 
    } 

Как вы можете видеть матч:

  • ID 237: team1_goals> team2_goals
  • ID 238: team1_goals = team2_goals,
  • ID 239: team1_goals < team2_goals,
  • ID 240 : team1_goals < team2_goals,

    $ matches = App \ Match :: где ('team1_goals', '>', 'Team2_goals') -> счетчик()

дает результат 222 (240), так что его не все() или чего-л

Почему это происходит со мной?

ответ

0

Похоже, получил его: в котором функция третий аргумент не может быть установлен на имя поля, так что им моем случае сравнение было как

select * from matches where team1_goals > 'team2_goals' 

я должен использовать

$matches = App\Match::whereRaw('team1_goals > team2_goals')->get(); 
Смежные вопросы