Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Using with PDO MySQL - a datetime example #20

Closed
pipiscrew opened this issue Feb 8, 2017 · 4 comments
Closed

Using with PDO MySQL - a datetime example #20

pipiscrew opened this issue Feb 8, 2017 · 4 comments
Assignees

Comments

@pipiscrew
Copy link

pipiscrew commented Feb 8, 2017

hi there,

Im using it also to 'query' date/datetime field, in example an array from PDO MySQL, works flawless... :)
not optimized the manual dates (2017-02-12/2017-02-15) should be stored on vars, out of the loop.

$result3 = from($rows)
->where(function ($x) { return
strtotime($x['datecreated']) >= strtotime("2017-02-12") && 
strtotime($x['datecreated']) < strtotime("2017-02-15"); })
->select(function($res){ return array(
            "country" => $res['country'],
            "datecreated" => $res['datecreated']
        ); })
->toArray();

and also advise that can be used without composer :

require_once('/YaLinqo/Utils.php');
require_once('/YaLinqo/Functions.php');
require_once('/YaLinqo/Linq.php');
require_once('/YaLinqo/EnumerablePagination.php');
require_once('/YaLinqo/EnumerableGeneration.php');
require_once('/YaLinqo/Enumerable.php');
require_once('/YaLinqo/Errors.php');
require_once('/YaLinqo/OrderedEnumerable.php');

for groupby - check also - https://gist.github.com/mcaskill/baaee44487653e1afc0d

thanks for your time!

@Athari
Copy link
Owner

Athari commented Feb 8, 2017

  1. Using YaLinqo's where-queries on database tables results in wasted resources. Filtering on SQL side is much much faster than tranfering the whole table into a huge PHP array and filtering using PHP code. If you can afford wasting resources, it's fine, but usually it's way too much. So if you can perform a query fully in SQL, you should do so.

    YaLinqo should be used when SQL isn't available (e.g. results from simple web services), or the logic is too complex for SQL (and even then as much logic as possible should be performed in SQL).

  2. In the modern world, I see no reason to not use Composer. Sure, you can include every single file, but even if you don't like Composer, you can use a tiny one-line PSR-0 compliant autoloader instead which will make all the work for you.

    spl_autoload_register(function($c){@include preg_replace('#\\\|_(?!.+\\\)#','/',$c).'.php';});
    
  3. The function in this gist is much simpler than YaLinqo's. Its only benefit is simpler syntax when working with array keys.

@pipiscrew
Copy link
Author

pipiscrew commented Feb 9, 2017

hi @Athari

1-correct. The current situation is any query made in dbase the response takes ~2min (because is this dbase falling too many users.). As a result, I take all the needed records with a query then separate by YaLinqo :)

2- :) thanks I will try it.

3-ofc

greets!

@pipiscrew
Copy link
Author

hi again,

found a complete example for spl_autoload_register

// Add the appropiate extra include paths here
$includePaths = array(
    __DIR__."/../vendor/",
    __DIR__."/../modules/"
);
 
// Add the above paths to the global include path
set_include_path(implode(PATH_SEPARATOR, $includePaths));
 
// Register the psr-0 autoloader for ease of use 
spl_autoload_register(function($c){@include preg_replace('#\\\|_(?!.+\\\)#','/',$c).'.php';}); 

the need :

using the following while loop
on where line, the variable $startdate is Undefined variable...

Any tip?

$startdate = strtotime($dtp_start." UTC");
$enddate = strtotime($dtp_end." UTC");

while($startdate < $enddate) {

    $result4 = from($rows)
    ->where(function ($x) { 
        return strtotime($x['CLOSE_DATE']) < strtotime('+8 days', $startdate)  && $x['OWWNER']=='costas'; })
    ->toArray();
    
    $startdate = strtotime('+7 days', $startdate);
} 

@Athari
Copy link
Owner

Athari commented Feb 19, 2017

Your anonymous function lacks use statement:

   ->where(function ($x) use ($startdate) { ...

@Athari Athari self-assigned this Feb 28, 2017
@Athari Athari closed this as completed Feb 28, 2017
@Athari Athari changed the title [info] hang also a datetime example Using with PDO MySQL - a datetime example Feb 15, 2018
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

No branches or pull requests

2 participants