laravel ²î±ðÀàÐͶÔÓ¦²î±ð±í
laravel ÊÇÒ»¿îÊ¢ÐÐµÄ php web ¿ò¼Ü£¬ÆäÌṩÁËÐí¶àÀû±ãµÄ¹¤¾ßºÍ¹¦Ð§£¬ÓÃÓÚ¹¹½¨ÏÖ´ú»¯µÄ web Ó¦ÓóÌÐò¡£ÔÚ laravel ÖУ¬¿ÉÒÔʹÓà eloquent orm£¨¹¤¾ß¹ØϵӳÉ䣩À´ÖÎÀíÊý¾Ý¿âÖеÄÊý¾Ý¡£Õâ¸öÊý¾Ý¿â²ãÃæµÄ¿â¿ÉνÊÇ laravel ¿ò¼ÜÄÚºÜÊÇÖ÷ÒªµÄÒ»»·£¬ËüÈÏÕæÖÎÀíÎÒÃǺó¶Ë³ÌÐòµÄÊý¾Ý¡£ÔÚ laravel ÖУ¬ÎÒÃÇ¿ÉÒÔͨ¹ý½ç˵ģ×ÓÀ´ÖÎÀí²î±ðÀàÐ͵ÄÊý¾Ý£¬²¢ÇÒ¿ÉÒÔͨ¹ýÄ£×ÓÖ®¼äµÄ¹ØϵÀ´×éÖ¯ºÍÅÌÎÊÊý¾Ý¡£½ñÌìÎÒÃÇÀ´ÌÖÂÛÒ»ÏÂÔõÑùʹÓà laravel ÖÐÄ£×ÓÖ®¼äµÄ¹ØϵÀ´´¦Àí²î±ðÀàÐÍÊý¾Ý¶ÔÓ¦µÄ²î±ð±í¡£
¹ØÓÚ´ó´ó¶¼µÄ Web Ó¦ÓóÌÐòÀ´Ëµ£¬Êý¾Ýͨ³£ÐèÒª·ÖΪ²î±ðµÄÀàÐÍ£¬ÀýÈçÓû§Êý¾Ý¡¢ÉÌÆ·Êý¾Ý¡¢ÎÄÕÂÊý¾ÝµÈµÈ¡£ÔڹŰåµÄÊý¾Ý¿âÉè¼ÆÖУ¬Í¨³£»áΪÿÖÖÀàÐ͵ÄÊý¾Ý»®·Ö½¨ÉèÒ»ÕÅ±í£¬ÕâÒ²Ðí»áµ¼ÖÂÊý¾Ý¿â±íµÄÊýÄ¿Ôö¶à¡£¿ÉÊÇÔÚ Laravel ÖУ¬ÎÒÃÇ¿ÉÒÔͨ¹ý½¨ÉèÄ£×ÓÀ´´ú±í²î±ðÀàÐ͵ÄÊý¾Ý£¬¶ø²»ÊÇÖ±½ÓÔÚÊý¾Ý¿âÖн¨Éè±í¡£ÕâÑù£¬²»µ«Äܹ»ÊµÏÖÊý¾ÝµÄ×éÖ¯ºÍÅÌÎÊ£¬»¹×èÖ¹ÁËÊý¾Ý¿â±íµÄÊýÄ¿¹ý¶à´øÀ´µÄƶÀ§¡£¿ÉÊÇ£¬µ±ÎÒÃÇÐèÒªÔÚ³ÌÐòÖвéÕÒij¸öÌض¨ÀàÐ͵ÄÊý¾Ýʱ£¬ÎÒÃÇÔõÑùÈ·±£ËüÃÇÕýºÃ¶ÔÓ¦µ½×¼È·µÄ±íÖÐÄØ£¿
ÔÚ Laravel ÖУ¬¿ÉÒÔͨ¹ýΪÿÖÖÀàÐ͵ÄÊý¾Ý½ç˵һ¸ö²î±ðµÄÄ£×ÓÀ´½â¾öÕâ¸öÎÊÌâ¡£ÀýÈ磬ÎÒÃǵÄÓ¦ÓóÌÐò°üÀ¨Óû§Êý¾Ý¡¢ÉÌÆ·Êý¾ÝºÍÎÄÕÂÊý¾Ý¡£¿ÉÒÔΪÿÖÖÀàÐ͵ÄÊý¾Ý½¨ÉèÒ»¸ö¶ÔÓ¦µÄÄ£×Ó£ºUser¡¢ProductºÍPost¡£ÕâЩģ×Ó¿ÉÒÔͨ¹ý extends Òªº¦×ÖÀ´¼ÌÐø Laravel µÄ Model À࣬ÒÔ±ãʹÓà Eloquent µÄÖÖÖÖ¹¦Ð§¡£
È»¶ø£¬ÎÒÃÇ»¹ÐèÒªÔÚÄ£×ÓÖнç˵ÄĸöÊý¾Ý±íÓëÖ®¶ÔÓ¦¡£Ä¬ÈÏÇéÐÎÏ£¬Laravel »á½«Ä£×ÓÃû³Æת»»ÎªÐ¡Ð´²¢½«Æ临ÊýÐÎʽ×÷Ϊ±íÃû¡£ÀýÈ磬User Ä£×Ó½«Ä¬ÈÏʹÓà users ±í£¬Product Ä£×Ó½«Ä¬ÈÏʹÓà products ±í¡£¹ØÓÚ´ó´ó¶¼ÇéÐÎÀ´Ëµ£¬ÕâÖÖĬÈϵÄÐÐΪÒѾ×ã¹»ÁË¡£¿ÉÊÇ£¬µ±ÐèҪʹÓòî±ðµÄ±íÃûʱ£¬ÎÒÃÇÒ²¿ÉÒÔƾ֤һ¶¨µÄ¹æÔòÀ´×Ô½ç˵±íÃû¡£
Ê×ÏÈ£¬ÎÒÃÇ¿ÉÒÔÔÚÄ£×ÓÖÐʹÓà $table ÊôÐÔÀ´Ö¸¶¨ÒªÊ¹ÓõıíÃû³Æ¡£ÀýÈ磬ÎÒÃÇ¿ÉÒÔÔÚ User Ä£×ÓÖÐÌí¼ÓÒÔÏ´úÂ룺
class User extends Model { protected $table = 'my_users'; }
µÇ¼ºó¸´ÖÆ
Õ⽫ʹ User Ä£×ÓʹÓà my_users ±í£¬¶ø²»ÊÇĬÈ쵀 users ±í¡£
Æä´Î£¬ÈôÊÇÎÒÃÇÐèÒªÔÚ¶à¸öÄ£×ÓÖÐʹÓÃÏàͬµÄ±í£¬¿ÉÒÔʹÓà $table ÊôÐÔÖ¸¶¨±íÃûµÄ»ù´¡Ãû³Æ£¬È»ºóʹÓà Laravel µÄÔ¼¶¨À´Ö¸¶¨±íÖеÄÏÖʵ±íÃû³Æ¡£ÀýÈ磬¼ÙÉèÎÒÃǵÄÓ¦ÓóÌÐòÖÐÐèҪʹÓÃÁ½¸ö²î±ðµÄÄ£×ÓÀ´ÖÎÀíÓû§Êý¾Ý£¬Ò»¸öÓÃÓÚÍøÕ¾Óû§£¬ÁíÒ»¸öÓÃÓÚÒƶ¯Ó¦ÓóÌÐòÓû§¡£ÔÚÕâÖÖÇéÐÎÏ£¬¿ÉÒÔ½«±íÃûÉèÖÃΪ users£¬È»ºóÔÚÄ£×ÓÖÐʹÓòî±ðµÄºó׺À´Ö¸Ê¾ÏÖʵµÄ±íÃû³Æ¡£ÀýÈ磬WebsiteUser Ä£×Ó¿ÉÒÔ½« $table ÊôÐÔÉèÖÃΪ ‘users_website’£¬¶ø AppUser Ä£×Ó¿ÉÒÔ½« $table ÊôÐÔÉèÖÃΪ ‘users_app’¡£ÕâÑù£¬Laravel »áƾ֤ģ×ӵĺó׺À´×Ô¶¯Æ´½Ó±íÃû³Æ£¬´Ó¶ø½«Êý¾ÝÉúÑĵ½×¼È·µÄ±íÖС£
³ý´ËÖ®Í⣬ÎÒÃÇ»¹¿ÉÒÔʹÓà Laravel ÖеĶà̬¹ØÁªÀ´Îª²î±ðÀàÐ͵ÄÊý¾Ý½¨Éè¶ÔÓ¦µÄ±í¡£Ëùν¶à̬¹ØÁª£¬ÊÇÖ¸Ò»¸öÄ£×Ó¿ÉÒÔÓë¶à¸öÆäËûÄ£×ÓÏà¹ØÁªµÄ¹Øϵ¡£ÀýÈ磬ÔÚÎÒÃǵÄÓ¦ÓóÌÐòÖУ¬ÎÒÃÇ¿ÉÒÔ½¨ÉèÒ»¸ö Comment Ä£×ÓÀ´´æ´¢¶ÔËùÓÐÀàÐ͵ÄÊý¾ÝµÄ̸ÂÛ¡£ÕâÒ»¹Øϵ¾ÍÊǶà̬¹ØÁª¡£
ΪÁËÔÚ Comment Ä£×ÓÖÐʵÏÖ¶à̬¹ØÁª£¬ÐèʹÓà Laravel µÄ polymorphic Ô¼¶¨¡£ÔÚ¾ÙÐжà̬¹ØÁªÊ±£¬ÎÒÃÇÐèҪΪҪ¹ØÁªµÄÄ£×Ó½ç˵Á½¸öÊôÐÔ£ºmorphTo ºÍ morphMany¡£morphTo ÊôÐÔָʾģ×ÓÓµÓеĶà̬¹ØÁª£¬²¢ÇÒÐèÒªÖ¸¶¨Ò»¸öÃû³Æ£¬ÒÔ±ãÔÚÆäËûÄ£×ÓÖоÙÐÐÒýÓá£morphMany ÊôÐÔָʾÆäËûÄ£×ÓÓµÓеĶà̬¹ØÁª£¬²¢ÇÒÐèÒªÖ¸¶¨Òª¹ØÁªµ½ÄĸöÄ£×ÓÒÔ¼°Ö¸ÏòµÄÃû³Æ¡£Á½¸öÊôÐÔÖж¼ÐèÒª½ç˵һ¸ö¹ØÁªÃû³Æ£¬ÒÔ±ãÔÚºóÐøÅÌÎÊÖоÙÐÐÒýÓá£ÀýÈ磺
class Comment extends Model { public function commentable() { return $this->morphTo(); } } class User extends Model { public function comments() { return $this->morphMany('AppComment', 'commentable'); } } class Product extends Model { public function comments() { return $this->morphMany('AppComment', 'commentable'); } } class Post extends Model { public function comments() { return $this->morphMany('AppComment', 'commentable'); } }
µÇ¼ºó¸´ÖÆ
ÕâÑù£¬ÔÚÅÌÎÊ̸ÂÛʱ£¬¿ÉÒÔʹÓà commentable_type ºÍ commentable_id ¹ØϵÀ´È·¶¨¸Ã̸ÂÛÊôÓÚÄĸöÄ£×Ó¡£ÀýÈ磬ҪÅÌÎÊËùÓйØÓÚ Product Ä£×ÓµÄ̸ÂÛ£¬¿ÉÒÔʹÓÃÒÔÏ´úÂ룺
$product = Product::find(1); $comments = $product->comments()->get();
µÇ¼ºó¸´ÖÆ
×ÜÖ®£¬Laravel ÌṩÁ˶àÖÖ²î±ðµÄÒªÁìÀ´ÖÎÀíÊý¾Ý¿âÖеÄÊý¾Ý£¬°üÀ¨Í¨¹ýÄ£×ӺͶà̬¹ØϵÀ´×éÖ¯Êý¾Ý£¬²¢ÇÒ¿ÉÒÔʹÓòî±ðµÄÒªÁìÀ´Ö¸¶¨Ãü¾ÝÓëÄĸö±í¶ÔÓ¦¡£Ê¹ÓÃÕâЩ¹¤¾ß£¬ÎÒÃÇ¿ÉÒÔÇáËɵؽ¨Éè¸ßЧµÄ¡¢×éÖ¯ÓÅÒìµÄÊý¾Ý¿â½á¹¹£¬²¢ÇáËɵػá¼ûºÍʹÓÃÕâЩÊý¾Ý¡£
ÒÔÉϾÍÊÇlaravel ²î±ðÀàÐͶÔÓ¦²î±ð±íµÄÏêϸÄÚÈÝ£¬¸ü¶àÇë¹Ø×¢±¾ÍøÄÚÆäËüÏà¹ØÎÄÕ£¡