2013-07-23 4 views
1

나는 쉬운 문제가 있다고 생각한다. Player.php라는 새로운 모델을 만들었습니다.Laravel 4 model

<?php 

    class Player extends Eloquent { 


     protected $table = 'players'; 

     protected $fillable = array('char_name', 'sex'); 
     public $timestamps = false; 

} 

그리고 내 컨트롤러에서 이것을 사용했습니다 : :이처럼 보이는 이것은 내 양식이다

public function post_character() 
{ 
    $input = Input::all(); 

    $rules = array(
     'char_name' => 'required|unique:players,name|min:4', 
     'sex' => 'required' 
    ); 

    $validation = Validator::make($input, $rules); 

    if ($validation->fails()) { 
     return Redirect::to('create_character')->withErrors($validation); 
    } else { 

     $player = new Player; 
     $player->name = $input['char_name']; 
     $player->sex = $input['sex']; 
     $player->save; 

     return Redirect::to('managment')->with('success', 'Your character has been created.'); 
    } 
} 

:

@extends('base') 
@section('main') 

<div class="doc-content-box"> 
    <legend>Create a character</legend> 
    {{ Form::open(array('url' => 'create_character')) }} 

     <div class="control-group"> 
    {{ Form::label('char_name', 'Character name') }} 
    <div class="controls"> 
    {{ Form::text('char_name', null, array('placeholder' => 'Character name goes here..')) }} 
    </div> 
</div> 

    <div class="control-group"> 
     <div class="controls"> 
{{ Form::select('sex', array('1' => 'Male', '2' => 'Female'), '1'); }} 
</div> 
</div> 

<div class="form-actions"> 
    {{ Form::submit('Create a character', array('class' => 'btn btn-success')) }} 
    {{ Form::button('Help', array('class' => 'btn btn-default')) }} 
</div> 
    {{ Form::close() }} 
</div> 

@endsection 

그리고 지금이 내 오류는 다음과 같습니다

SQLSTATE[23000]: Integrity constraint violation: 1452 Cannot add or update a child row: a foreign key constraint fails (`thefs`.`players`, CONSTRAINT `players_ibfk_1` FOREIGN KEY (`account_id`) REFERENCES `accounts` (`id`) ON DELETE CASCADE) (SQL: insert into `players` (`name`, `sex`) values (?, ?)) (Bindings: array (0 => 'Malx', 1 => '1',)) 

또한 여기 내 데이터베이스의 스크린 샷입니다. 테이블 '선수'

http://3.imgland.net/lL6EIv.png

답변

1

글쎄, 오류는 플레이어 테이블에 제약이 있다고 말합니다. 여기에서 사용자를 만듭니다.

$player = new User; 
    $player->name = $input['char_name']; 
    $player->sex = $input['sex']; 
    $player->save; 

하지만 account_id를 설정하지 않았습니다. 당신은 phpMyAdmin을 기본적으로이 필드는 NULL을 설정하거나 외부 키 제약을 삭제하거나 설정할 권리는 쓸 수 그런데

을 ACCOUNT_ID 수

$player = Player::create(array(
    'name' => ... 
)); 

대신 새 개체를 만든 다음 그것을

+0

나는 여전히 사용할 수 있습니다 가정

$player = new Player(); $player->user_id = Auth::user()->id; $player->name = $input['char_name']; $player->sex = $input['sex']; $player->save(); 

:.'$ 플레이어 = 새로운 플레이어; $ player-> name = $ input [ 'char_name']; $ player-> sex = $ input [ 'sex']; $ player-> save; 'null로 설정하지 않으려면 어떻게해야 올바른 account_id를 설정할 수 있습니까? 나는이 모든 것에 초보자 일 뿐이며, 당신이 정말로 나에게 깊이 설명해 주길 바란다. – dinomuharemagic

+0

충고 한마디가 아니라 시행 규칙이지만 Laravel의 인증 정보는 "User 모델 이름으로, "사용자"를 테이블 이름으로 사용합니다 (예 : "account"대신). –

0

당신은 당신의 모델 계정과 선수 사이의 관계에있는 것 같다. 컨트롤러에서이 관계를 만들어야합니다.

0
을 절약

Eloquent 모델에서 사용자와 플레이어 간의 관계를 정의하지 않았기 때문일 수 있습니다. 여기에 당신이 할 수있는 일반적인 방법이 있습니다 ("Account"모델을 "User"로 대체 할 것입니다. [계정 테이블은 users 테이블이되고 players 테이블은 account_id 대신 user_id의 외래 키를 가질 것입니다] , Laravel의 기본 인증 메커니즘과 함께 더 좋게).

//user.php 
class User extends Eloquent { 
    //Define relation to players 
    public function players() { 
     return $this->hasMany('Player'); 
    } 
} 


//player.php 
class Player extends Eloquent { 
    //Your other player model code 

    //Define relation to user 
    public function user() { 
     return $this->belongsTo('User'); 
    } 
} 

이제 새로운 선수 만들 때 :이 사용자 ID가 로그인 어떤 사용자로부터 오는

+0

감사! 당신은 내 마음을 맑게했습니다. 이제 좀 더 도움이 필요해. 다음과 같이 표시 할 수있는 방법은 무엇입니까? http://1.imgland.net/8jWJcG.png 문자 이름 (데이터베이스의 '열'), 수준 ('레벨 '), role (데이터베이스의'group_id '). 데이터를 데이터베이스에서 꺼내 테이블에 넣으려면? 온라인 또는 오프라인 (데이터베이스의 '온라인') 여부를 확인하는 방법은 무엇입니까? 그리고 또 하나, 어떻게 플레이어의 위치를 ​​설정할 수 있습니까 (게임용), 열 (posx, posy, posz)에 기본 숫자를 설정하고 (편집 할 구성으로 만드십시오) 어떻게 할 수 있습니까? – dinomuharemagic

+0

어떤 종류의 기준으로 모델에서 찾기를 수행해야합니다. 간단한 데모 : http://d.chend.me/MoO5 이것은 정말 기본적인 것들입니다. Eloquent 모델 검색시 문서를 읽으십시오. http://laravel.com/docs/eloquent#introduction –

+0

감사합니다. 플레이어의 위치를 ​​설정할 수있는 방법 (게임용), 열 (posx, posy, posz)에 기본 숫자를 설정하는 방법에 대한 대답을하지 않았습니다. (그리고 그것을 편집 할 설정처럼) 만드시겠습니까? – dinomuharemagic