나는 Codeigniter에서 온 Laravel에 대해 처음으로 새롭다. 그리고 나는 대부분 그것을 좋아한다. 그러나 나는 정말로 Eloquent에 대한 나의 머리를 얻을 수 없다.Laravel - 능변을 이해하기 위해 정말로 애 쓰고있다.
SELECT * FROM site INNER JOIN tweeter ON tweeter.id = site.tweeter_id
내가 (A는 "소속"으로)이 같은 일을 시도 : :이 같은 간단한 쿼리를 수행 할 경우
$site = Site::with('tweeter')->find($site_id);
을하지만 지금은 두 가지 질문이 정말 필요과 같이되지 않는 IN() :
SELECT * FROM `site` WHERE `id` = '12' LIMIT 1
SELECT * FROM `tweeter` WHERE `id` IN ('3')
그래서 나는 시도하고 그래서 같이 가입 강제 :
$site = Site::join('tweeter', 'tweeter.id', '=', 'site.tweeter_id')->find($site_id);
그리고 지금 나는 오류과 같이 얻을 : "site.id ="같은 것을 사용하는 데 필요한
SQLSTATE[23000]: Integrity constraint violation: 1052 Column 'id' in where clause is ambiguous
SQL: SELECT * FROM `site` INNER JOIN `tweeter` ON `tweeter`.`id` = `site.tweeter_id` WHERE `id` = ? LIMIT 1
Bindings: array (
0 => 12,
)
오류가 어디 그것은 명백하다. 그러나 어쨌든이 일이 일어나기를 나는 볼 수 없다.
그래서 나는 다시 유창에 가서 사용하여 바로 붙어있어 :
DB::table('site')->join('tweeter', 'tweeter.id', '=', 'site.tweeter_id')->where('site.id','=',$site_id)->first()
나는 그것이 엄청난 문제가되지 같아요. 나는 정말로 웅변을 이해하고 싶다. 나는 도울 수 없지만 나는 그것이 크게 잘못되고 그것이 어떻게 작동하는지 오해하고 있다고 느낀다. 내가 놓친 게 있니? 아니면 정말 특별한 방법으로 사용해야합니까?
제가 궁금해하는 점은 어쨌든 Eloquent를 사용하여 만들고 싶은 쿼리를 만들 수 있습니까?
그렇다면 웅변을 사용하는 데있어 중요한 점은 무엇입니까? 이것은 내가 정말로 이해하지 못하는 것입니다. Eloquent의 새로운 기능은 완전히 중복되고 Fluent를 사용할 수도 있습니다. – robjbrain
Eloquent는 ORM이므로 가상 데이터베이스와 비슷한 코드에 액세스 할 수 있습니다. Eloquent는 이와 같은 조인을 사용하는 것과는 대조적으로 관계를 관리 할 때 훨씬 더 의미가 있습니다. 또한 Eloquent를 사용하면 열심히로드 할 수 있으므로 DB 호출 횟수가 줄어 듭니다. –
또한 ORM은 최적의 SQL 쿼리 방법을위한 것이 아닙니다. 이것은 모든 유형의 ORM에 해당됩니다. –