2017-01-05 2 views
-1

레코드 모델 및 상태 모델이 있습니다. 각 레코드가 상태를 가질 수있는 레코드 모델의 상태 _id에 연결된 상태 모델에 저장되어있는 "승인", "비 승인"또는 "진행 중"일 수 있습니다. 이것은 나의 모델 & 그들의 관계입니다.Laravel 5.3 Eloquent & Relationship

Records(id, user_id, status_id, note, date, timestamp) 

function status() 
{ 
return $this->hasOne('App\Status'); 
} 

Statuses(id, name) 

function record() 
{ 
return $this->belongsToMany('App\Record'); 

} 

$ record-> status-> name 내 콜렉션에서 이와 같이 콜백하고 싶습니다. 하지만 내가 관계 &에게 콜백을 재생하려고하지만 그것이 작동하지 오류를

SQLSTATE[42S22]: Column not found: 1054 Unknown column 'Statuses.record_id' in 'where clause' (SQL: select * from `statuses` where `statuses`.`record_id` = 3 and `statuses`.`record_id` is not null limit 1) 

을 제공합니다. 그렇게 할 수 있습니까? 또는 단순히 상태 레코드를 사용하지 않고 레코드 테이블에 직접 상태를 저장하면됩니다. 고맙습니다.

+0

당신이 우리를 알려 주시기 바랍니다 수있는 당신의 관련 테이블 이름 : 당신은 대신 다음을 시도 할 수 있습니다 아르? 또한 마이그레이션에 외래 키를 설정 했습니까? – CUGreen

+0

마이그레이션 코드도 넣을 수 있습니까? – HelpingHand

답변

0

나는 많은 것보다는 많은 것을 원한다고 생각합니다.

는 대신 다음보십시오 :

Records(id, user_id, status_id, note, date, timestamp) 

function status() 
{ 
return $this->belongsTo('App\Status'); 
} 

Statuses(id, name) 

function record() 
{ 
return $this->hasMany('App\Record'); 
} 
0
SQLSTATE[42S22]: Column not found: 1054 Unknown column 'Statuses.record_id' in 'where clause' (SQL: select * from `statuses` where `statuses`.`record_id` = 3 and `statuses`.`record_id` is not null limit 1) 

오류에 따르면! 상태 표에 records_id가 없습니다. 그래서 그것을 추가하십시오.

이렇게하려면 상태 마이그레이션에서 record_id라는 부호없는 정수가 있어야합니다.

$table->unsignedInteger('record_id')->references('id')->on('records'); //This will work as the foreign key to find the respective Status. 

마이그레이션 파일을 편집 한 후에는 마이그레이션을 롤백해야합니다. 당신이뿐만 아니라 마이그레이션을 추가 할 경우 프로젝트 디렉토리에서 터미널에서 ,

php artisan migrate:rollback 

, 지적하기 쉬울 것이다.

0

관계가 반대가되었습니다.

class Record extends Model 
{ 
    public function status() 
    { 
     return $this->belongsTo('App\Status'); 
    } 
} 

class Status extends Model 
{ 
    public function records() 
    { 
     return $this->hasMany('App\Record'); 
    } 
} 
0

이 상태에 Records

Records(id, user_id, status_id, note, date, timestamp) 

function status(){ 
    return $this->hasOne('App\Status','id','status_id'); 
} 

과 hasMany의 관계에 hasOne 관계를 정의

Statuses(id, name) 

function record(){ 
    return $this->hasMany('App\Record','status_id','id'); 
} 
0
model:Record  
Records(id,user_id,status_id,note) 
function status(){ 
return $this->belongsTo('App\Status','id); 
} 

model:Status 
Status(id,name) 
function record(){ 
return $this->hasmany('App\Record','id','status_id'); 
} 

Try this relation it will work 
+0

는'0abded5d613c35e174212ce480a87b7a6a95419a.php 라인 (200) ErrorException : 가 아닌 객체의 속성을 얻으려고 노력 (보기 : /Applications/MAMP/htdocs/test/resources/views/records/timeline.blade.php) 응답에 대한' 감사합니다 . 위의 오류를 보여줍니다. 하지만 그것은 더 이상 내가 {{@ $ records-> status-> name}} 또는 {{$ yourVar [ 'value']}}처럼해야 할 때 작동합니다. 이유를 알고 계십니까? 감사. – rajalanun

관련 문제