@@ -1127,6 +1127,204 @@ public function order_by($column, $direction = 'asc')
11271127 return $ this ;
11281128 }
11291129
1130+ /**
1131+ * Tambahkan klausa WHERE untuk tanggal.
1132+ *
1133+ * @param string $column
1134+ * @param string $operator
1135+ * @param mixed $value
1136+ * @param string $connector
1137+ *
1138+ * @return Query
1139+ */
1140+ public function where_date ($ column , $ operator , $ value , $ connector = 'AND ' )
1141+ {
1142+ return $ this ->where ($ this ->raw ('DATE( ' . $ column . ') ' ), $ operator , $ value , $ connector );
1143+ }
1144+
1145+ /**
1146+ * Tambahkan klausa WHERE untuk bulan.
1147+ *
1148+ * @param string $column
1149+ * @param string $operator
1150+ * @param mixed $value
1151+ * @param string $connector
1152+ *
1153+ * @return Query
1154+ */
1155+ public function where_month ($ column , $ operator , $ value , $ connector = 'AND ' )
1156+ {
1157+ return $ this ->where ($ this ->raw ('MONTH( ' . $ column . ') ' ), $ operator , $ value , $ connector );
1158+ }
1159+
1160+ /**
1161+ * Tambahkan klausa WHERE untuk hari.
1162+ *
1163+ * @param string $column
1164+ * @param string $operator
1165+ * @param mixed $value
1166+ * @param string $connector
1167+ *
1168+ * @return Query
1169+ */
1170+ public function where_day ($ column , $ operator , $ value , $ connector = 'AND ' )
1171+ {
1172+ return $ this ->where ($ this ->raw ('DAY( ' . $ column . ') ' ), $ operator , $ value , $ connector );
1173+ }
1174+
1175+ /**
1176+ * Tambahkan klausa WHERE untuk tahun.
1177+ *
1178+ * @param string $column
1179+ * @param string $operator
1180+ * @param mixed $value
1181+ * @param string $connector
1182+ *
1183+ * @return Query
1184+ */
1185+ public function where_year ($ column , $ operator , $ value , $ connector = 'AND ' )
1186+ {
1187+ return $ this ->where ($ this ->raw ('YEAR( ' . $ column . ') ' ), $ operator , $ value , $ connector );
1188+ }
1189+
1190+ /**
1191+ * Tambahkan klausa WHERE untuk waktu.
1192+ *
1193+ * @param string $column
1194+ * @param string $operator
1195+ * @param mixed $value
1196+ * @param string $connector
1197+ *
1198+ * @return Query
1199+ */
1200+ public function where_time ($ column , $ operator , $ value , $ connector = 'AND ' )
1201+ {
1202+ return $ this ->where ($ this ->raw ('TIME( ' . $ column . ') ' ), $ operator , $ value , $ connector );
1203+ }
1204+
1205+ /**
1206+ * Tambahkan klausa WHERE untuk membandingkan dua kolom.
1207+ *
1208+ * @param string $column1
1209+ * @param string $operator
1210+ * @param string $column2
1211+ * @param string $connector
1212+ *
1213+ * @return Query
1214+ */
1215+ public function where_column ($ column1 , $ operator , $ column2 , $ connector = 'AND ' )
1216+ {
1217+ $ this ->wheres [] = [
1218+ 'type ' => 'where_column ' ,
1219+ 'column1 ' => $ column1 ,
1220+ 'operator ' => $ operator ,
1221+ 'column2 ' => $ column2 ,
1222+ 'connector ' => $ connector ,
1223+ ];
1224+ return $ this ;
1225+ }
1226+
1227+ /**
1228+ * Tambahkan ORDER BY untuk record terbaru.
1229+ *
1230+ * @param string $column
1231+ *
1232+ * @return Query
1233+ */
1234+ public function latest ($ column = 'created_at ' )
1235+ {
1236+ return $ this ->order_by ($ column , 'desc ' );
1237+ }
1238+
1239+ /**
1240+ * Tambahkan ORDER BY untuk record tertua.
1241+ *
1242+ * @param string $column
1243+ *
1244+ * @return Query
1245+ */
1246+ public function oldest ($ column = 'created_at ' )
1247+ {
1248+ return $ this ->order_by ($ column , 'asc ' );
1249+ }
1250+
1251+ /**
1252+ * Check apakah query memiliki hasil.
1253+ *
1254+ * @return bool
1255+ */
1256+ public function exists ()
1257+ {
1258+ $ query = $ this ->copy ();
1259+ $ query ->selects = ['* ' ];
1260+ $ query ->limit = 1 ;
1261+ $ sql = $ query ->grammar ->select ($ query );
1262+ $ result = $ query ->connection ->query ($ sql , $ query ->bindings );
1263+
1264+ return count ($ result ) > 0 ;
1265+ }
1266+
1267+ /**
1268+ * Check apakah query tidak memiliki hasil.
1269+ *
1270+ * @return bool
1271+ */
1272+ public function doesnt_exist ()
1273+ {
1274+ return !$ this ->exists ();
1275+ }
1276+
1277+ /**
1278+ * Lakukan chunk berdasarkan ID.
1279+ *
1280+ * @param int $count
1281+ * @param callable $callback
1282+ * @param string $column
1283+ * @param string $alias
1284+ *
1285+ * @return bool
1286+ */
1287+ public function chunk_by_id ($ count , callable $ callback , $ column = 'id ' , $ alias = null )
1288+ {
1289+ $ count = (int ) $ count ;
1290+ $ alias = $ alias ?: $ column ;
1291+ $ last_id = null ;
1292+
1293+ do {
1294+ $ clone = $ this ->copy ();
1295+
1296+ if (!is_null ($ last_id )) {
1297+ $ clone ->where ($ column , '> ' , $ last_id );
1298+ }
1299+
1300+ $ clone ->order_by ($ column , 'asc ' )->take ($ count );
1301+ $ results = $ clone ->get ();
1302+ $ counts = count ($ results );
1303+
1304+ if ($ counts === 0 ) {
1305+ break ;
1306+ }
1307+
1308+ if ($ callback ($ results ) === false ) {
1309+ return false ;
1310+ }
1311+
1312+ $ last_id = $ results [$ counts - 1 ]->$ alias ;
1313+ } while ($ counts === $ count );
1314+
1315+ return true ;
1316+ }
1317+
1318+ /**
1319+ * Dump query dan die.
1320+ *
1321+ * @return void
1322+ */
1323+ public function dd ()
1324+ {
1325+ dd ($ this ->debug ());
1326+ }
1327+
11301328 /**
11311329 * Tangani pemanggilan method secara dinamis.
11321330 * Seperti fungsi agregasi dan where.
0 commit comments