내가 (일반 및 MVC) 냉각 박스에 새로운 오전과 아무 소용이, 자신이 분류하는 노력 해왔다에 시간. 찾는 기능은 우리의 절차 사이트에서 잘 작동하며, 비트로 mvc로 전환하면 젖은 발로 젖게하려고합니다. 내 MVC 테스트 사이트에 쿼리하지만이 첫 번째 요소를 반복 [N] 라이브 사이트
, 내 로컬 컴퓨터에서 실행될 때, 제대로 예상되는 요소를 반환하는 쿼리가 있습니다. 그러나 라이브 사이트에서 실행될 때 많은 요소가 반환 된 배열에있는 경우 첫 번째 요소를 반복합니다.지역 기계 : 냉각 박스 4.3, Lucee 4.5.5, MySQL은 5.6.37, phpMyAdmin을 4.4.15
라이브 : 냉각 박스 4.3, ACF 2016, MySQL은 5.7, 여기에 phpMyAdmin 4.6.6
은이다 내 CFC의 기능 :
function getMilestonesByDate(required string pickedMonth='', required string pickedDay='') {
transaction {
queryMilestonesByDate = queryExecute("
SELECT tbl_milestones.ID as milestoneID, tbl_milestones.event, tbl_milestones.date
FROM tbl_milestones
WHERE MONTH(tbl_milestones.date) = :pickedMonth AND DAY(tbl_milestones.date) = :pickedDay AND YEAR(tbl_milestones.date) != 1111
ORDER BY tbl_milestones.date ASC
", {
pickedMonth: {value: arguments.pickedMonth, cfsqltype: "cf_sql_varchar"},
pickedDay: {value: arguments.pickedDay, cfsqltype: "cf_sql_varchar"}
}
);
}
milestonesByDate = arrayNew(1);
for (row in queryMilestonesByDate) {
returnStruct = StructNew();
returnStruct["milestoneID"] = queryMilestonesByDate.milestoneID;
returnStruct["event"] = queryMilestonesByDate.event;
returnStruct["date"] = dateFormat(queryMilestonesByDate.date, "full");
arrayAppend(milestonesByDate, returnStruct);
}
return serializeJSON(milestonesByDate);
}
다시 말하지만이 방법은 로컬에서도 잘 작동합니다. 예를 들어, 12 월 26 일에는 1986 년과 1995 년에 각각 두 가지 마일스톤이 표시됩니다. 그러나 라이브 사이트에서는 1986 년의 두 가지 마일스톤이 두 번 표시됩니다.
그러나, 라이브 사이트에 phpMyAdmin을 단지 SQL을 실행하는 예상대로 작동합니다
SELECT tbl_milestones.ID as milestoneID, tbl_milestones.event, tbl_milestones.date
FROM tbl_milestones
WHERE MONTH(tbl_milestones.date) = '12' AND DAY(tbl_milestones.date) = '26' AND YEAR(tbl_milestones.date) != 1111
ORDER BY tbl_milestones.date ASC
그래서 쿼리 괜찮을 것 같다. 그러나 무언가는 어딘가에서 쫓겨나고 있으며, 나는 그것을 알 수 없다.
function showMilestonesByDate(event, rc, prc) {
prc.milestonesByDate = milestoneModel.getMilestonesByDate(pickedMonth,pickedDay);
event.renderData(type="json", data=prc.milestonesByDate);
}
, 촬상 달의 값 및 픽업 하루 jQuery를 UI의 날짜 선택기에서 온 : 도움이된다면, 여기 내 이벤트 핸들러에서 함수에 대한 호출입니다. 아무도 도움이된다고 생각한다면 그 코드를 게시 할 수 있습니다. 하지만 테스트 페이지에서 하드 코드 된 값의 쿼리 결과를 덤프하는 것은 datepicker가 사용되었는지 또는 페이지에 있는지 여부에 관계없이 동일한 문제를 보여줍니다. 이 모두가 우리의 절차 사이트에서 잘 작동하지만 내가 힘든 시간 MVC에 물건을 전환하고 내가 잘못 가고 위치에 어떤 조언이나 제안을 감사하겠습니다을 겪고 있음을
주의! 미리 감사드립니다.
UPDATE : 여기에 로컬 사이트에서 prc.milestonesByDate의 덤프입니다
[{ "날짜": "1986년 12월 26일 (금요일)", "이벤트": "러시아 밀 Mi-의 첫 비행 348 ","milestoneID ": 435}, {"date ":"Tuesday, December 26, 1995 ","event ":"인도 해군 HAL Dhruv (Protoype PT4)의 첫 비행 ","milestoneID ": 428}]
그리고 라이브에서 같은 일 :
[{ "날짜": "1986년 12월 26일 (금요일)", "milestoneID": 435, "이벤트": "러시아 밀 미-34의 첫 비행"} { "date": "1986 년 12 월 26 일 금요일", "milestoneID": 435, "event": "러시아 밀 Mil M의 첫 비행 I-34 "}]
많은 감사, RRK! 그건 실제로 트릭을 했어 - Lucee와 ACF에서 문제 없어요. 당신의 도움을 주셔서 대단히 감사합니다! 나는 어디서부터 시작할 지조차 몰랐다. 하지만 당신 덕분에 ACF와 Lucee의 차이점에 대해 더 많이 살펴 보았습니다. 이것을 읽는 다른 사람을 위해, https://www.raymondcamden.com/2015/10/01/some-cool-things-in-lucee/ "는 당신을 시작하게하는 레이 캠든 (Ray Camden)의 좋은 게시물입니다. – daltec
어쨌든'row' 변수를 사용하지 않는 이유는? 쿼리를 반복하면서 쿼리의 각 행을 인덱스로 설정 한 다음 해당 인덱스에 대한 레코드를 출력하는 것입니다. for (row in query)'는'for (query in x) '일 수 있고'query' 대신'x'를 참조 할 수 있습니다. 이전에 루핑 문제를 보았습니다.'query.variable'에서 ACF는'query' 변수의 각 행 대신 각 루프의'query'에'variable'의 첫 번째 인스턴스를 리턴합니다. – Shawn
안녕하세요 Shawn, 팁 주셔서 감사합니다! ol '.이 함수는 단지 하나의 함수에서 사용되었을 때 루프 내에서 범위 지정을 할 필요가 없었습니다. –
daltec