Jump to content
php.lv forumi

Iegūt konkrētus datus MYSQL


vienmer-iesacejs

Recommended Posts

"daudz lielāka kontrole" - tas ir arī - daudz plašāks iespējamību lauks, līdz ar to ir daudz sarežģītāk tajā orientēties = lielāka iespējamība uz bugiem. Abstrakcijas pilda uzdevumu "lai apakšas dara mašīna un lai cilvēks spētu operēt augstāk". Lietojot abstrakcijas, retajās reizēs, kad ir kas specifisks vajadzīgs, tad jāsajūdz ar slāni zemāk. Tas pats attiecas arī uz multiplatform izstrādes frameworkiem - tiek nodrošināta funkcionalitāte, kas nosedz lielāko daļu lietošanas gadījumu, bet retajās reizēs, pēc specifiskas platformas fīčas - tiek rakstīts custom modulis. Tieši par multiplatform frameworkiem, man ir aizdomas, ka šī stratēģija no biznesa viedokļa ir ļoti izdevīga, taču ir cilvēki, kas saka, ka tas līdz galam nav efektīvi. Vēl nezinu, pats gribu pārbaudīt, it kā obviously un pēc pirmās loģikas tā sanāk, bet praksē jau visādi gadās. Bet nu aizdomājos offtoptic, sry.

Edited by gurkjis
Link to comment
Share on other sites

Nezinu, ko jūs tik sarežgītu rakstat, ka jums tik ļoti vajag, ka ORM visu dara jūsu vietā...

Fakts kā tāds, ka visas tās abstrakcijas nepieļauj visu to funkcionalitāti, ko var panākt ar raw SQL, un ja rodās nepieciešamība, tad vienalga nāksies to izmantot. Labāk tad jau pierast un mācēt visu, ko vajag.

Edited by jurchiks
Link to comment
Share on other sites

  • 2 weeks later...

Nezinu, ko jūs tik sarežgītu rakstat, ka jums tik ļoti vajag, ka ORM visu dara jūsu vietā...

Tieši tam, kas idejiski ir ļoti vienkārši un vislaik ir ~copy/paste, arī ORM noder vislabāk, lai nav katru reizi ar rokām jāčakarējas.

 

Operēt lāpstu arī nav sarežģīti, toties neefektīvi, ja var operēt ekskavatoru. Tajās reizēs, kad kauss par rupju, tad arī ar rokām apšķipelē, ko nu vajag.

Link to comment
Share on other sites

Man copy/paste kaut kā galīgi nesanāk, un ar rokām nekāda čakara nav, tā kā...

 

Tā analoģija par lāpstu un ekskavatoru ir apjomu salīdzināšana.

Varbūt man vienkārši nav trāpījies tik apjomīgus projektus taisīt, ka katru dienu pa N jaunām tabulām nāk klāt.

Edited by jurchiks
Link to comment
Share on other sites

ORM piemērs:

Vienkāršs user klases modelis, ar divām papildus funkcijām, kuras palielina naudu un pieredzi un pārbauda vai naudas pietiek un pieredze netiek samazināta.

class User extends Model{
  function incMoney($dmoney){
    if ($this['money']<-$dmoney) throw new UserExeption("Not enough money");
    $this['money']+=$dmoney;
  }
  function incExp($dexp){
    if ($dexp<0) throw new UserException("Cant decrease experience");
    $this['exp']+=$dexp;
  }
}

$user = new User($userID);
$user->incMoney($someMoney);
$user->incExp($someExp);
$user->save();
echo "User has $".$user['money']." and its exp is ".$this['exp'];

Aiz modeļa notiek sekojošas lietas.

Ja nauda un exp nemainījās, tad user modelis pie save pat neizsauc update kveriju.

Ja mainījās tikai nauda, vai tikai exp, tad update kverijā būs tikai tas lauks updeitots.

Ja mainījās abi, tad updeitoja abus laukus.

 

Tagad pamēģini šo uzrakstīt ar raw SQL;

 

Pie tam šis ir ļoti vienkāršs piemērs. Attīstot tālāk, lietotājam pie noteiktiem exp varētu piešķirt bonusus un naudu. Un tad jau tikai incExp metode var izmainīt gan exp, gan money laukus.

Vēl tālāk var būt iesaistīti ne tikai 2 lauki, bet 20 lauki.

Vēl tālāk var tikt iesaistīti vairāki modeļi, kur izmaiņas vienā, var radīt izmaiņas otrā.

Sekot, kuri modeļi ir jāglabā un kuri nē un kuri lauki ir jāglabā un kuri nē, radīs ļoti sarežģītu kodu, ja to darīs ar RAW SQL.

Link to comment
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

Loading...
×
×
  • Create New...