Join 컨트롤러 부분에서
$memberInfo = studyMemberInfo::where('join_idx',$id)→with('login')→get();
이렇게 한번 해보세요
가르쳐주신 방식대로 했습니다. 그런데 두개의 테이블을 합하면 조인한 테이블의 전체 컬럼이 나와야하는데 한테이블에 있는 컬럼만 다나오네요, 왜그럴까요, 이렇게되면 일대일 관계가 아니네요.ㅠㅠ
$model = studyLogin::where('join_idx',$id)->with('member')->get();
dump($model);
relation에는 그냥 그대로 널이네요.;
결국은 쿼리도 기존과 다를바가 없네요.
Eloquent는 relationship 메소드의 이름을 검사하고 메소드 이름에 _id
를 붙여서 외래 키의 기본 이름으로 결정합니다. 하지만 모델의 외래 키가 메소드명_id
가 아니라면 커스텀 키 이름을 두번째 인자로 belongsTo
에 전달하면 됩니다.
https://laravel.kr/docs/5.2/eloquent-relationships
링크를 참조하시면 될거 같습니다.
가르쳐주신 방식대로 했습니다. 그런데 두개의 테이블을 합하면 조인한 테이블의 전체 컬럼이 나와야하는데 한테이블에 있는 컬럼만 다나오네요, 왜그럴까요, 이렇게되면 일대일 관계가 아니네요.ㅠㅠ
$model = studyLogin::where('join_idx',$id)->with('member')->get();
dump($model);
relation에는 그냥 그대로 널이네요
결국은 쿼리도 기존과 다를바가 없네요.
라라벨의 hasone 관계를 이용해서 두개의 테이블 조인을 하고있습니다.
일단 제가 studymemberinfo 테이블과 studylogin 테이블을 조인합니다.
studymemberinfo의 기본키는 join_idx이구요, 이 기본키가 studylogin의 외래키로 들어가게됩니다
다음과 같은 결과가 나옵니다.
select * from `studyMemberInfo` where `studyMemberInfo`.`join_idx` = '14' limit 1
4.25msstudyselect * from `studyLogin` where `studyLogin`.`login_idx` is null limit 1
studyLogin에서도 join_idx 값으로 비교를 해야하는데 엉뚱하게 기본키인 login_idx 로 is null을 체크합니다. 왜그런건지 모르겠네요.
Column not found: 1054 Unknown column 'studyLogin.study_member_info_id' in 'where clause' (SQL: select * from `studyLogin` where `studyLogin`.`study_member_info_id` = 14 and `studyLogin`.`study_member_info_id` is not null limit 1)
소스는 다음과 같습니다.
namespace App;
use Illuminate\Database\Eloquent\Model;
class studyMemberInfo extends Model
{
protected $table = "studyMemberInfo";
protected $connection = "mysql";
protected $primaryKey = "join_idx";
public function login(){
return $this→belongsTo(studyLogin::class);
}
}
namespace App;
use Illuminate\Database\Eloquent\Model;
class studyLogin extends Model{
protected $table = "studyLogin";
protected $connection = "mysql";
protected $primaryKey = "login_idx";
public function member(){
return $this->hasOne(studyMemberInfo::class);
}
}
컨트롤러에서는 아래와 같이 가져옵니다.
public function joinResultPage($id){
$memberInfo = studyMemberInfo::find($id)->login;
dump($memberInfo);
//$memberInfo->join_idx;
}
결과는 계속 null을 출력하고있습니다. 왜 그러는걸까요?