рдбреЗрдЯрд╛ рд╕рдВрд╕реНрдХрд░рдг рдХреЗ рд▓рд┐рдП рдЕрдкреНрд░рддреНрдпрд╛рд╢рд┐рдд рдЖрд╡рд╢реНрдпрдХрддрд╛

рдЬрдм рд╡рд┐рдХрд╛рд╕ рдХреЗ рдЕрдВрдд рдХреЗ рдирд┐рдХрдЯ рдПрдХ рдкрд░рд┐рдпреЛрдЬрдирд╛ рдпрд╣ рд╕реНрдкрд╖реНрдЯ рд╣реЛ рдЬрд╛рддрд╛ рд╣реИ рдХрд┐ рдбреЗрдЯрд╛ рд╕рдВрд╕реНрдХрд░рдг рдХреЗ рд╕рд╛рде рд╡рд┐рдЪреНрдЫреЗрдж рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ, рдХреНрдпреЛрдВрдХрд┐ рдХреЛрдИ рднреА рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рд▓реЙрдЧ рдЗрди рдХрд░ рд╕рдХрддрд╛ рд╣реИ рдФрд░ рд╣рдЯрд╛ рд╕рдХрддрд╛ рд╣реИ рдЬреЛ рджрд░реНрдЬрдиреЛрдВ рдЕрдиреНрдп рд▓реЛрдЧреЛрдВ рджреНрд╡рд╛рд░рд╛ рд╕рдордп рдХреЗ рд╕рд╛рде рдмрдирд╛рдпрд╛ рдЧрдпрд╛ рд╣реИ, рдЖрдкрдХреЛ рдПрдХ рд╕рдорд╛рдзрд╛рди рдХреА рддрд▓рд╛рд╢ рдХрд░рдиреА рд╣реЛрдЧреА рдЬрд┐рд╕рдореЗрдВ рдиреНрдпреВрдирддрдо рд╢реНрд░рдо рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛред рд╡рд┐рд╢рд┐рд╖реНрдЯ рдкрд░рд┐рдпреЛрдЬрдирд╛ рдХреЗ рд╡рд┐рд╡рд░рдг рдкрд░ рдзреНрдпрд╛рди рджрд┐рдП рдмрд┐рдирд╛, рдЬрд╣рд╛рдВ рдРрд╕реА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдЙрддреНрдкрдиреНрди рд╣реБрдИ, рдПрдХ Google рдбреЙрдХреНрд╕ рд╕реНрдкреНрд░реЗрдбрд╢реАрдЯ рджрд╕реНрддрд╛рд╡реЗрдЬрд╝ рдХреА рдХрд▓реНрдкрдирд╛ рдХрд░реЗрдВ рдЬрд┐рд╕реЗ рд╕рд╛рдЗрдЯ рдкрд░ рдХрд┐рд╕реА рднреА рдЖрдЧрдВрддреБрдХ рджреНрд╡рд╛рд░рд╛ рд╕рдВрдкрд╛рджрд┐рдд рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред



рдорд╛рди рд▓реАрдЬрд┐рдП рдХрд┐ Google рдЗрдВрдЬреАрдирд┐рдпрд░ рдЗрд╕ рд╕рдВрд░рдЪрдирд╛ рдХреЗ рд╕рд╛рде рдПрдХ MySQL рдбреЗрдЯрд╛рдмреЗрд╕ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реИрдВ:

рджрд╕реНрддрд╛рд╡реЗрдЬреЛрдВ
--id
--name
--creator_id

рдкрддреНрд░рдХ
--id
--document_id
--name

рдкрдВрдХреНрддрд┐рдпреЛрдВ
--number
--sheet_id
--height

рдХреЙрд▓рдо
--number
--sheet_id
--width

рдХреЛрд╢рд┐рдХрд╛рдУрдВ
--id
--sheet_id
--color
--content
--row_number
--col_number
--creator_id

рдЬреИрд╕рд╛ рдХрд┐ рдкрд╣рд▓реЗ рд╣реА рдКрдкрд░ рдЙрд▓реНрд▓реЗрдЦ рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ, рдХрд┐рд╕реА рднреА рд╡реНрдпрдХреНрддрд┐ рдХреЗ рдкрд╛рд╕ рджрд╕реНрддрд╛рд╡реЗрдЬрд╝ рддрдХ рдкрд╣реБрдВрдЪ рд╣реИ, рдФрд░, рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рд╕реЗрд▓ рдХреЗ рдореВрд▓реНрдп рдХреЛ рдЕрд╢реНрд▓реАрд▓ рд╢рдмреНрдж рдореЗрдВ рдмрджрд▓рдиреЗ рд╕реЗ рдкрд┐рдЫрд▓реЗ рдореВрд▓реНрдп рдХреЛ рд╕реНрдерд╛рдпреА рд░реВрдк рд╕реЗ рдирд╖реНрдЯ рдХрд░ рджрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛ред

рд╕рдВрд░рдЪрдирд╛ рдЖрд╡рд╢реНрдпрдХрддрд╛рдУрдВ


рдЕрдирд┐рд╡рд╛рд░реНрдп


рд╡рд╛рдВрдЫрдиреАрдп



рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди



рдмрд╣реБрдд рд╡рд┐рдЪрд╛рд░-рд╡рд┐рдорд░реНрд╢ рдХреЗ рдмрд╛рдж, рдПрдХ "рд╕реВрддреНрд░" рдирд┐рдХрд╛рд▓рд╛ рдЧрдпрд╛ред рдХреНрдпрд╛ рд╣реЛрдЧрд╛ рдЕрдЧрд░ рд╣рдо рдПрдХ рдЕрддрд┐рд░рд┐рдХреНрдд рддрд╛рд▓рд┐рдХрд╛ рдмрдирд╛рддреЗ рд╣реИрдВ рдФрд░ рдореБрдЦреНрдп рддрд╛рд▓рд┐рдХрд╛ рдФрд░ рдирд╡ рдирд┐рд░реНрдорд┐рдд рддрд╛рд▓рд┐рдХрд╛ рдореЗрдВ рдореВрд▓реНрдпреЛрдВ рдХреЗ рд╡рд┐рднрд┐рдиреНрди рд╕рдВрд╕реНрдХрд░рдгреЛрдВ рдХреЛ рдЬреЛрдбрд╝рддреЗ рд╣реИрдВред

рд╕рдмрд╕реЗ рдкрд╣рд▓реЗ, рд╣рдореЗрдВ рд╕рдВрд╢реЛрдзрди рдХреЗ рд╕рд╛рде рдПрдХ рддрд╛рд▓рд┐рдХрд╛ рдЪрд╛рд╣рд┐рдП:

рд╕рдВрд╢реЛрдзрди
--id
--parent_id
--document_id
--created_date

рд╣рдо рдХреЛрд╢рд┐рдХрд╛рдУрдВ рдХреА рддрд╛рд▓рд┐рдХрд╛ 2 рд╕реЗ рд╡рд┐рддрд░рд┐рдд рдХрд░рддреЗ рд╣реИрдВ, рддрд╛рдХрд┐ рдЬрд╛рдирдХрд╛рд░реА рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рди рд╣реЛ, рддрд╛рдХрд┐ рд╕рдВрд╕реНрдХрд░рдг рдореЗрдВ рдХреЛрд╢рд┐рдХрд╛рдУрдВ рдореЗрдВ рдмрдиреЗ рд░рд╣реЗ, рдФрд░ рдХреЛрд╢рд┐рдХрд╛рдУрдВ рдореЗрдВ -рдбреЗрдЯрд╛ - рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛-рд╕рдВрд╢реЛрдзрд┐рдд рдЬрд╛рдирдХрд╛рд░реАред рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛, cells_data рддрд╛рд▓рд┐рдХрд╛ рдореЗрдВ рд╣рдо create_in_revision_id, рд╣рдЯрд╛рдП рдЧрдП_in_revision_id рдлрд╝реАрд▓реНрдб рдФрд░ рдкрд░рд┐рд╡рд░реНрддрди рдХрд░рдиреЗ рд╡рд╛рд▓реЗ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдХреЗ рдкрд╣рдЪрд╛рдирдХрд░реНрддрд╛ рдЬреЛрдбрд╝рддреЗ рд╣реИрдВред

рдХреЛрд╢рд┐рдХрд╛рдУрдВ
--id
--sheet_id
--row_number
--col_number
--creator_id

cells_data
--cell_id
--color
--content
--data_creator_id
--created_in_revision_id
--deleted_in_revision_id
(cell_id + create_in_revision_id рдкрд░ рдкреНрд░рд╛рдердорд┐рдХ рдХреБрдВрдЬреА)

рд╣рдорд╛рд░реЗ рдбреЙрдХреНрдпреВрдореЗрдВрдЯ рдСрдмреНрдЬреЗрдХреНрдЯ (рдпрджрд┐ рд╣рдо рдЙрджреНрджреЗрд╢реНрдпрдкреВрд░реНрдг рдврдВрдЧ рд╕реЗ рдкреНрд░реЛрдЧреНрд░рд╛рдо рдХрд░рддреЗ рд╣реИрдВ) рдореЗрдВ рдХреЛрдб рдореЗрдВ рд╣рдо getRevisionCondition method ($ revisionId = false) рдЬреЛрдбрд╝рддреЗ рд╣реИрдВ, рдЬреЛ рдХрд┐ "0_100,300,301 рдореЗрдВ" create_in_revision_id (0,100,300,301) рдореЗрдВ "create_in_revision_id" рдЬреИрд╕реЗ SQL рдЙрдкрд╕рд░реНрдЧ рдХреЛ рд╡рд╛рдкрд╕ рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдПред рдпрд╛рдиреА рд╡рд░реНрддрдорд╛рди рд╕рдВрд╢реЛрдзрди рдФрд░ рдирд┐рд░реНрдорд╛рдг рдореЗрдВ рдЙрд╕рдХреЗ рд╕рднреА рднрд╛рдЧреАрджрд╛рд░ "(...)" рдФрд░ "рдирд╣реАрдВ (...)" рдореЗрдВ рд╢рд╛рдорд┐рд▓ рд╣реИрдВ

рдирдореВрдирд╛

рдЕрдЧрд▓рд╛ рдХреНрд╡рд╛рд░ рд╣реИ, рдЬреЛ рдЗрд╕ рддрд░рд╣ рджрд┐рдЦрддрд╛ рдерд╛:
select * from cells where row_number=3 and col_number=2 

рдореЗрдВ рдмрджрд▓ рдЬрд╛рддрд╛ рд╣реИ:
 select c.*,cd.* from cells c,cells_data cd where row_number=3 and col_number=2 and id=cell_id and $revisionCondition 

рдмреЗрд╢рдХ, рдЗрди рддрд╛рд▓рд┐рдХрд╛рдУрдВ рдХреЗ рдлрд╝реАрд▓реНрдб рдирд╛рдореЛрдВ рдХреЛ рдбреБрдкреНрд▓рд┐рдХреЗрдЯ рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдПред

рдирдпрд╛ рд░рд┐рдХреЙрд░реНрдб рдбрд╛рд▓реЗрдВ

рдпрд╣рд╛рдБ рд╕рдм рдХреБрдЫ рдЙрддрдирд╛ рд╣реА рд╕рд░рд▓ рд╣реИ рдЬрд┐рддрдирд╛ рдХрд┐ рд╕реИрдВрдкрд▓рд┐рдВрдЧред рдЬрд╛рдВрдЪреЗрдВ рдХрд┐ рдХреНрдпрд╛ рд╕рдВрд╢реЛрдзрди рдХреА рд╕рдордп рд╕реАрдорд╛ рд╕рдорд╛рдкреНрдд рд╣реЛ рдЧрдИ рд╣реИ рдФрд░ рдЕрдВрддрд┐рдо рдПрдХ рд▓реЗ рд▓реЛред рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдЗрд╕ рддрд░рд╣:
 $revision=$document->updateRevisionIfExpired() 

рд╕рдмрд╕реЗ рдкрд╣рд▓реЗ, рдореБрдЦреНрдп рддрд╛рд▓рд┐рдХрд╛ (рдХреЛрд╢рд┐рдХрд╛рдУрдВ) рдореЗрдВ рдбрд╛рд▓реЗрдВ, рдлрд┐рд░ рд╕рдВрд╕реНрдХрд░рдг рдбреЗрдЯрд╛ (cells_data) рдХреЗ рд╕рд╛рде рддрд╛рд▓рд┐рдХрд╛ рдореЗрдВред Create_in_revision_id рдлрд╝реАрд▓реНрдб рдореЗрдВ, рдирд╡реАрдирддрдо рд╕рдВрд╢реЛрдзрди рдХреА рдЖрдИрдбреА рд▓рд┐рдЦреЗрдВред

рд░рд┐рдХреЙрд░реНрдб рд╣рдЯрд╛рдПрдВ

рдпрд╣рд╛рдВ рд╣рдо рдбрд┐рд╕реНрдХ рд╕реНрдерд╛рди рдХреЛ рдмрдЪрд╛рдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдХрд░реЗрдВрдЧреЗред рдпрджрд┐, рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рд╣рдо рд╕рдВрд╢реЛрдзрди рдЬреАрд╡рдирдХрд╛рд▓ рдХреЗ рд░реВрдк рдореЗрдВ 30 рдорд┐рдирдЯ рдирд┐рд░реНрдзрд╛рд░рд┐рдд рдХрд░рддреЗ рд╣реИрдВ, рддреЛ рд╣рдо рд╡рд░реНрддрдорд╛рди рд╕рдВрд╢реЛрдзрди рдХреЗ рд╕рд╛рде рд╣рдЯрд╛рдП рдЧрдП рд░рд┐рдХреЙрд░реНрдб рдХреЗ рд╕рдВрд╢реЛрдзрди рдХреА рддреБрд▓рдирд╛ рдХрд░рддреЗ рд╣реИрдВ:

рдиреЛрдб.рдЬреЗ рдХреЗ рд▓рд┐рдП, рдпрд╣ рдЗрд╕ рддрд░рд╣ рджрд┐рдЦреЗрдЧрд╛:
 if(cellRevisionId==currentRevision.getId()){ db.online.query("delete from cells_data where cell_id="+cellId+" and created_in_revision_id="+cellRevisionId) }else{ db.online.update('cells_data',{'deleted_in_revision_id':currentRevision.getId()},{'cell_id': cellId, 'created_in_revision_id' : cellRevisionId}) } 

рд░рд┐рдХреЙрд░реНрдб рдЕрдкрдбреЗрдЯ рдХрд░реЗрдВ

рдбреЗрдЯрд╛ рдмрджрд▓рдирд╛ рдХреБрдЫ рд╣рдЯрд╛рдиреЗ рдЬреИрд╕рд╛ рд╣реИред рдпрджрд┐ рд╕рдВрд╢реЛрдзрди рдирд╣реАрдВ рдмрджрд▓рд╛ рд╣реИ, рддреЛ рдбреЗрдЯрд╛ рдХреЗрд╡рд▓ рдЕрдкрдбреЗрдЯ рдХрд░рддрд╛ рд╣реИ, рдпрджрд┐ рд╡рд╣ рдмрджрд▓ рдЧрдпрд╛ рд╣реИ, рддреЛ рд╣рдЯрд╛рдП рдЧрдП_in_revision_id рдлрд╝реАрд▓реНрдб рдХреЛ рдЕрдкрдбреЗрдЯ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ рдФрд░ рдПрдХ рдирдпрд╛ рд░рд┐рдХреЙрд░реНрдб cells_data рддрд╛рд▓рд┐рдХрд╛ рдореЗрдВ create_in_revision_id рдореЗрдВ рдирдП рд╕рдВрд╢реЛрдзрди рдЖрдИрдбреА рдХреЗ рд╕рд╛рде рдбрд╛рд▓рд╛ рдЬрд╛рддрд╛ рд╣реИред

рдПрдХ рдирд┐рд╖реНрдХрд░реНрд╖ рдХреЗ рдмрдЬрд╛рдп


рдХреНрдпреЛрдВрдХрд┐ рд╕рдВрд╕реНрдХрд░рдг рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╡рд╛рд▓реЗ рдЕрдзрд┐рдХрд╛рдВрд╢ рдЯреЗрдмрд▓ рдЕрдм рдПрдХ рдирдИ рд╕рдВрд░рдЪрдирд╛ рдореЗрдВ рдЕрдиреБрд╡рд╛рджрд┐рдд рд╣реЛ рдЧрдП рд╣реИрдВ - рдореИрдВ рдлрд╛рдпрджреЗ рдФрд░ рдиреБрдХрд╕рд╛рди рдХреЛ рдЙрдЬрд╛рдЧрд░ рдХрд░ рд╕рдХрддрд╛ рд╣реВрдВ:

рдЧреМрд░рд╡


рдХрдорд┐рдпреЛрдВ

Source: https://habr.com/ru/post/In136202/


All Articles