라라벨 쿼리(DB) 사용을 원활하게 하는 방법 문의
안녕하세요.
다름이 아닌 연결된 DB를 효율적으로 사용하는 방법에 대해서 문의드립니다.
현재는 Eloquent ORM 방식으로 모델에 등록해놓고 가져와서 사용하고 있습니다.
namespace App\Http\Test; use Illuminate\Database\Eloquent\Model; class TestModel extends Model { # 모델과 연관된 테이블입니다. protected $table = 'SESSIONS'; # 테이블과 연결된 기본 키입니다. protected $primaryKey = 'SESSIONS_ID'; # ID가 자동으로 증가하는지 여부를 나타냅니다. public $incrementing = false; # 자동 증가 ID의 "유형"입니다. protected $keyType = 'string'; # 모델의 타임스탬프 지정 여부를 나타냅니다. public $timestamps = false; # 모델 날짜 열의 저장 형식입니다. protected $dateFormat = 'U'; # 속성에 대한 모델의 기본값입니다. // protected $attributes = [ // 'delayed' => false, // ]; }대략 이런식으로 모델을 만든 후에
use App\Http\Controllers\Test; TestModel::where('SESSIONS_ID', "test")->get();이런식으로 사용을 해볼까 하고 있습니다만
더 좋은 방법이 있는지 궁금합니다.
55글자 더 채워주세요.
1개의 답변이 있어요!
사실 더 좋은 방법이라기 보다는 그때그때 맞는 방법들이 다양하게 있습니다.
get()은 보통 여러개의 레코드를 가져올 때 사용하곤 합니다.
그래서 foreach를 돌려서 접근합니다.
만약 $testModel = TestModel::where('SESSIONS_ID', "test")->get(); 라고 했을 때,
바로 컬럼에 접근하려면 $testModel[0]->column 이 될 것입니다.
$testModel = TestModel::where('SESSIONS_ID', "test")->get(); $testModel[0]->column;지금은 SESSIONS_ID값이 PK로 보이는데 그러면 find를 이용해도 됩니다.
$testModel = TestModel::find('test')
이렇게 하면 컬럼에 바로 접근이 가능합니다.
$testModel->column
$testModel = TestModel::find('test'); $testModel->column;만일 여러개의 레코드가 가져올 수 있는 상황에서 첫번째 레코드에 바로 접근하려면 first()도 사용이 가능합니다.
$testModel = TestModel::where('SESSIONS_ID', "test")->first(); 라고 하게 된다면,
testModel->column 으로 바로 접근합니다.
$testModel = TestModel::where('SESSIONS_ID', "test")->first(); testModel->column;