GithubHelp home page GithubHelp logo

x0bandeira / linkable Goto Github PK

View Code? Open in Web Editor NEW
42.0 3.0 28.0 136 KB

Linkable plugin for CakePHP, with LinkableBehavior the ContainableBehavior's ass kicker

Home Page: http://rafaelbandeira3.wordpress.com/2008/11/16/linkable-behavior-taking-it-easy-in-your-db/

PHP 100.00%

linkable's Introduction

Linkable Plugin
CakePHP Plugin - PHP 5 only

LinkableBehavior. Taking it easy in your DB.

Light-weight approach for data mining on deep relations between models. 
Join tables based on model relations to easily enable right to left find operations.
Can be used as a alternative to the ContainableBehavior:
- On data fetching only in right to left operations,
wich means that in "one to many" relations (hasMany, hasAndBelongsToMany)
should only be used from the "many to one" tables. i.e:
To fetch all Users assigneds to a Project with ProjectAssignment,
$Project->find('all', array('link' => 'User', 'conditions' => 'project_id = 1')) 
 - Won't produce the desired result as data came from users table will be lost.
$User->find('all', array('link' => 'Project', 'conditions' => 'project_id = 1'))
 - Will fetch all users related to the specified project in one query
 - On data mining as a much lighter approach - can reduce 300+ query find operations in one single query with joins; "or your money back!" ;-)
 - Has the 'fields' param enabled to make it easy to replace Containable usage, only change the 'contain' param to 'link'.

RafaelBandeira <rafaelbandeira3 (at) gmail (dot) com>
http://rafaelbandeira3.wordpress.com

Licensed under The MIT License
Redistributions of files must retain the above copyright notice.
 
@version 1.0; 

linkable's People

Contributors

x0bandeira avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar

linkable's Issues

Solution: Linked tables names SQL join includes prefix twice in CakePHP 1.3.13

When using Linkable behavior in CakePHP 1.3.13 tablenames in SQL instruction generated by a "find" statement produces errors because tablenames include table prefix twice:

Prefix: tbl
Model: User
Table: user

Generated SQL statement produces: 'tbl_'tbl_user''

The solution is to modify the Linkable behavior in the 140 line:

if (empty($options['table'])) {
$options['table'] = $db->fullTableName($_Model, true);
}

With:
if (empty($options['table'])) {
$options['table'] = $_Model->table;
}

This is because if you see CakePHP 1.3.13 changelog:
http://cakephp.org/changelogs/1.3.13

Now calling fullTableName is not need internally anymore while translating a join:

[3becdc5] Removing uses of db->fullTableName() when creating joins. Refs #2074
cakephp/cakephp@3becdc5

[6afa21c] find with joins option now respects prefix set in database configuration, fixes #1517 test to prove validity of ticket #1517
cakephp/cakephp@6afa21c

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.