Location: PHPKode > scripts > MySQL Model > summary.php
<?php

	$connection = mysql_connect(
		"localhost",
		"root",
		""
	);
	
	mysql_select_db(
		"test",
		$connection
	);

	//////////////////////////////////////////////////////////////////////
	//
	//	MySQL tables used in the following examples.
	//
	//////////////////////////////////////////////////////////////////////
	/*	
		CREATE TABLE `categories` (
		  `id` int(11) NOT NULL auto_increment,
		  `title` varchar(255) NOT NULL default '',
		  `description` varchar(255) NOT NULL default '',
		  PRIMARY KEY  (`id`)
		) ENGINE=MyISAM;
		
		INSERT INTO `categories`(
			`title`,
			`description`
		) VALUES (
			'General',
			'This is the general category.'
		);
		
		CREATE TABLE `articles` (
		  `id` int(11) NOT NULL auto_increment,
		  `category_id` int(11) NOT NULL default '0',
		  `title` varchar(255) NOT NULL default '',
		  `introduction` varchar(255) NOT NULL default '',
		  `article` varchar(255) NOT NULL default '',
		  PRIMARY KEY  (`id`)
		) ENGINE=MyISAM;

		INSERT INTO `articles`(
			`category_id`,
			`title`,
			`introduction`,
			`article`
		) VALUES (
			1,
			'Hello, World!',
			'The introduction of the lame hello, world article.',
			'The article body of the lame hello, world article.'
		);

		CREATE TABLE `comments` (
		  `id` int(11) NOT NULL auto_increment,
		  `article_id` int(11) NOT NULL default '0',
		  `comment` varchar(255) NOT NULL default '',
		  PRIMARY KEY  (`id`)
		) ENGINE=MyISAM;
		
		INSERT INTO `comments`(
			`article_id`,
			`comment`
		) VALUES (
			1,
			'First comment!'
		);
		
		INSERT INTO `comments`(
			`article_id`,
			`comment`
		) VALUES (
			1,
			'Second comment!'
		);
	*/
	//////////////////////////////////////////////////////////////////////
	
	
	
	
	//////////////////////////////////////////////////////////////////////
	//
	//	Extend the class using a database table name as class name. The class
	//	name need not be the exact capitalization of the table name.
	//
	//////////////////////////////////////////////////////////////////////

		// Require the class to be extended.
		require_once("mysql_model.class.php");

		class Articles extends MySQL_Model
		{
			// Handle id and auto arguments in the constructor.
			function Articles($id = 0, $auto = "")
			{
				// Initialize the Model class with proper arguments.
				$this -> init($id, $auto);
				
				$this -> belongs_to_one(
					"categories", // The `categories` table.
					"id", // The foreign key in the `categories` table.
					"category_id" // The key in the `articles` table.
				);
				
				$this -> has_many(
					"comments", // The `comments` table.
					"article_id" // The foreign key in the `comments` table.
					// Assumed is the auto key in the `articles` table.
				);
			}
		}
	
	//////////////////////////////////////////////////////////////////////
	
	
	
	
	//////////////////////////////////////////////////////////////////////
	//
	//	Find all articles.
	//
	//////////////////////////////////////////////////////////////////////
	
		$a = new Articles();
		$articles = $a -> find();
		
		// Loop through the articles, printing them to the screen.
		for($i = 0; $i < count($articles); $i++)
		{
			echo $articles[$i]["categories"]["title"] . "\t";
			echo $articles[$i]["title"] . "\n";
		}
	
	//////////////////////////////////////////////////////////////////////
	
	
	
	
	//////////////////////////////////////////////////////////////////////
	//
	//	Attempt to create a new record. Cause an error to be generated when 
	//	`category_id` is not provided.
	//
	//	NOTE: If a column does not allow NULL values, it is considered by
	//	the MySQL_Model class to be required.
	//
	//	The only thing we must do after catching the error is set `category_id`
	//	to some value and attempt to save() again. The data persists after
	//	the call to save().
	//
	//	NOTE: If you provide an `id` to the Articles constructor and eventually
	//	call save(), this will update the record, not create a new one.
	//
	//////////////////////////////////////////////////////////////////////
	
		$a = new Articles();
		
		// Set fields, leaving one blank to cause an error.
		$a -> set("category_id", 0);
		$a -> set("title", "...");
		$a -> set("introduction", "...");
		$a -> set("article", "...");
		
		// Save and catch errors in data validation.
		if(!$a -> save())
		{
			// Print the error array to the screen.
			print_r($a -> error());
		}
		
	//////////////////////////////////////////////////////////////////////
	
	
	//////////////////////////////////////////////////////////////////////
	//
	//	Display managed data structure.
	//
	//	Assuming an Article with the `id` '1' exists, this will look in the
	//	`categories` and `comments` tables and attach all records matching:
	//
	//		"articles.category_id = categories.id"
	//			and
	//		"articles.id = comments.article_id"
	//
	//	This is considered a lazy join due to the absence of an actual join
	//	clause in the sql. This allows for much simpler code and the ability to
	//	greatly modify the behavior of values returned by this kind of join.
	//
	//	You will note that after printing out the fields array there is a new
	// 	field titled 'comments' which contains an array of values found in the
	//	`comments` table.
	//
	//	You will also notice a single array has been attached called
	//	`categories` which contains the record found in the `categories` table.
	//
	//	NOTE: When using has_many(), the attached array will be an array of 
	//	assoc array's. When using has_one(), the attached array will be an
	//	assoc array.
	//
	//	NOTE: You can call these functions as many times as you'd like. It
	//	simply continues to add to the fields.
	//
	//////////////////////////////////////////////////////////////////////
	
		$a = new Articles(1);
		print_r($a -> get_fields());
	
	//////////////////////////////////////////////////////////////////////
	
	
	mysql_close(
		$connection
	);
?>
Return current item: MySQL Model