Swift 4: Pagination using data from an array to make API call as user scrolls Announcing the arrival of Valued Associate #679: Cesar Manara Planned maintenance scheduled April 17/18, 2019 at 00:00UTC (8:00pm US/Eastern) The Ask Question Wizard is Live! Data science time! April 2019 and salary with experienceHow to know when UITableView did scroll to bottom in iPhoneFirestore listener is fetching more data than the number of documents that existsHow do I make calls to a REST api using C#?How to call Objective-C code from SwiftHow to remove an element from an array in SwiftMake REST API call in SwiftArray from dictionary keys in swiftXcode iOS UITableView Insert New Cell AnimationUpdate or reload UITableView after completion of delete action on detail viewError when deleting row from UITableViewShow wrong images in UICollectionViewRefresh tableView without call willDisplay in Swift

How should I respond to a player wanting to catch a sword between their hands?

What's the difference between (size_t)-1 and ~0?

Communication vs. Technical skills ,which is more relevant for today's QA engineer positions?

Replacing HDD with SSD; what about non-APFS/APFS?

Mortgage adviser recommends a longer term than necessary combined with overpayments

If I can make up priors, why can't I make up posteriors?

How can I make names more distinctive without making them longer?

Complexity of many constant time steps with occasional logarithmic steps

Active filter with series inductor and resistor - do these exist?

What LEGO pieces have "real-world" functionality?

Are my PIs rude or am I just being too sensitive?

What items from the Roman-age tech-level could be used to deter all creatures from entering a small area?

Windows 10: How to Lock (not sleep) laptop on lid close?

Need a suitable toxic chemical for a murder plot in my novel

Is above average number of years spent on PhD considered a red flag in future academia or industry positions?

What would be Julian Assange's expected punishment, on the current English criminal law?

Statistical model of ligand substitution

Array/tabular for long multiplication

Can a zero nonce be safely used with AES-GCM if the key is random and never used again?

Is there a documented rationale why the House Ways and Means chairman can demand tax info?

What's the point in a preamp?

Can the prologue be the backstory of your main character?

Can smartphones with the same camera sensor have different image quality?

Why use gamma over alpha radiation?



Swift 4: Pagination using data from an array to make API call as user scrolls



Announcing the arrival of Valued Associate #679: Cesar Manara
Planned maintenance scheduled April 17/18, 2019 at 00:00UTC (8:00pm US/Eastern)
The Ask Question Wizard is Live!
Data science time! April 2019 and salary with experienceHow to know when UITableView did scroll to bottom in iPhoneFirestore listener is fetching more data than the number of documents that existsHow do I make calls to a REST api using C#?How to call Objective-C code from SwiftHow to remove an element from an array in SwiftMake REST API call in SwiftArray from dictionary keys in swiftXcode iOS UITableView Insert New Cell AnimationUpdate or reload UITableView after completion of delete action on detail viewError when deleting row from UITableViewShow wrong images in UICollectionViewRefresh tableView without call willDisplay in Swift



.everyoneloves__top-leaderboard:empty,.everyoneloves__mid-leaderboard:empty,.everyoneloves__bot-mid-leaderboard:empty height:90px;width:728px;box-sizing:border-box;








2















Background



In my app, I store a bunch of object IDs. I use these IDs to make batch API calls. The API limits each call to 10 ID numbers. This data is rendered on a UITableView. The user can add and delete objects, which adds or removes the object ID from the database.



I’m using a Firestore database to store the object IDs on my end.



Current Implementation



Here’s what I’ve implemented so far, but it crashes the app when add & deleting objects. I haven’t been able to work out how to properly handle these cases & whether this is the right pattern to do something like this.



  1. Get object IDs to be used for making API calls

var objectIds: [String] = []
var chunkedObjectIds: [[String]] = []
var objects: [Array] = []
var offset: Int = 0

override func viewDidLoad()
super.viewDidload()

getObjectIds()



func getObjectIds()
// get objects IDs and store then in objectIds from the Firestore database
// setup the .addSnapshotLister so the query is triggered whenever there is a change in the data on Firestore for the collection

return chunkedObjectIds

// when finished, get the first 10 objects from the 3rd party API

fetchObjects()




  1. Take object Ids array, split into array of arrays (lots of 10) & Make the API call for the first 10

func fetchObjects() 

// split objectIds array in array of arrays, in lots of 10
// chunkedObjectIds is set here

// request the objects for the first 10 ID numbers

Alamofire.request(… parameter with first 10 object ids …) (objects) in

// save objects

// increment the offset
offset += 1





  1. Render the data on the UITableView cells


  2. Use the following method to load more data from the 3rd party API:


 func tableView(_ tableView: UITableView, willDisplay cell: UITableViewCell, forRowAt indexPath: IndexPath) 

let lastRow = objects.count

var parameters = [String: Any]()

if indexPath.row == lastRow
if !(offset == self.chunkedObjectIds.count)

// process the next batch from the array
parameters["id-numbers"] = self.chunkedObjectIds[offset].mapString($0).joined(separator: ",")

Alamofire.request(… paramaters: parameters) (objects) in
for item in 0..<objects.count
let indexPath = IndexPath(row: item + self.objects.count, section: 0)
self.paths.append(indexPath)

self.objects.append(contentsOf: objects)
self.tableView.beginUpdates()
self.tableView.insertRows(at: self.paths, with: .automatic)
self.tableView.endUpdates()
self.paths.removeAll()
self.offset += 1







  1. Adding or deleting objects:



    • The object ID is added or deleted from the Firestore database

    • The objectIds, chunkedObjectIds, offset and objects are cleared

    • The listener triggers a read of the data and the process repeats


The Issue & Question



This works well to load initial data. But duplication occurs when adding (and sometimes crashing). When deleting the app will crash because of out of range exceptions.



Is this the correct pattern to use in the first place? If so, what am I missing to handle cases after the first load, specifically the addition and deletion of new object IDs.



Edit



I have changed the implementation based on feedback in the comments. So now, the process is like this:



  1. Setup listener to get data from Firestore

  2. Loop through the object ids from Firestore and while the counter is < 10 or we reach object.count - Now I save the next offset and the next time it triggers this method, I initiate a loop from the next offset with the same while conditions

  3. Fetch the objects from the 3rd party API

  4. I kept using willDisplay cell method to trigger more data to load - it seemed to work more reliably than scrollDidEnd method.

So now the app doesn't crash anymore. There are some issues with the firestore listener, but I'll post that as a separate question.










share|improve this question
























  • Instead of creating an array of arrays, why don't you remember the last fetched object and get the index of it and fetch the next 10?

    – Sachin Vas
    Mar 22 at 7:11











  • try to divide and conquer. Mean first implement pagination correctly. Then try to implement add or delete. this will make your life easier. Secondly, i prefer to use scrollView delegate function scrollViewDidEndDragging for detecting end of tableView and reload more data. see this question. BTW, I prefer this approach

    – Awais Fayyaz
    Mar 22 at 7:17












  • github.com/alfianlosari/SWPaginationIOS , i have try it

    – Puji Wahono
    Mar 22 at 7:58











  • @SachinVas I ended up using that method instead, it's a much better way! Thanks.

    – KeepTryingMike
    Mar 23 at 3:30






  • 1





    @AwaisFayyaz - Thanks for the tip... I tried that method, but I went back to WillDisplay cell - I felt it works slightly better.

    – KeepTryingMike
    Mar 23 at 3:31

















2















Background



In my app, I store a bunch of object IDs. I use these IDs to make batch API calls. The API limits each call to 10 ID numbers. This data is rendered on a UITableView. The user can add and delete objects, which adds or removes the object ID from the database.



I’m using a Firestore database to store the object IDs on my end.



Current Implementation



Here’s what I’ve implemented so far, but it crashes the app when add & deleting objects. I haven’t been able to work out how to properly handle these cases & whether this is the right pattern to do something like this.



  1. Get object IDs to be used for making API calls

var objectIds: [String] = []
var chunkedObjectIds: [[String]] = []
var objects: [Array] = []
var offset: Int = 0

override func viewDidLoad()
super.viewDidload()

getObjectIds()



func getObjectIds()
// get objects IDs and store then in objectIds from the Firestore database
// setup the .addSnapshotLister so the query is triggered whenever there is a change in the data on Firestore for the collection

return chunkedObjectIds

// when finished, get the first 10 objects from the 3rd party API

fetchObjects()




  1. Take object Ids array, split into array of arrays (lots of 10) & Make the API call for the first 10

func fetchObjects() 

// split objectIds array in array of arrays, in lots of 10
// chunkedObjectIds is set here

// request the objects for the first 10 ID numbers

Alamofire.request(… parameter with first 10 object ids …) (objects) in

// save objects

// increment the offset
offset += 1





  1. Render the data on the UITableView cells


  2. Use the following method to load more data from the 3rd party API:


 func tableView(_ tableView: UITableView, willDisplay cell: UITableViewCell, forRowAt indexPath: IndexPath) 

let lastRow = objects.count

var parameters = [String: Any]()

if indexPath.row == lastRow
if !(offset == self.chunkedObjectIds.count)

// process the next batch from the array
parameters["id-numbers"] = self.chunkedObjectIds[offset].mapString($0).joined(separator: ",")

Alamofire.request(… paramaters: parameters) (objects) in
for item in 0..<objects.count
let indexPath = IndexPath(row: item + self.objects.count, section: 0)
self.paths.append(indexPath)

self.objects.append(contentsOf: objects)
self.tableView.beginUpdates()
self.tableView.insertRows(at: self.paths, with: .automatic)
self.tableView.endUpdates()
self.paths.removeAll()
self.offset += 1







  1. Adding or deleting objects:



    • The object ID is added or deleted from the Firestore database

    • The objectIds, chunkedObjectIds, offset and objects are cleared

    • The listener triggers a read of the data and the process repeats


The Issue & Question



This works well to load initial data. But duplication occurs when adding (and sometimes crashing). When deleting the app will crash because of out of range exceptions.



Is this the correct pattern to use in the first place? If so, what am I missing to handle cases after the first load, specifically the addition and deletion of new object IDs.



Edit



I have changed the implementation based on feedback in the comments. So now, the process is like this:



  1. Setup listener to get data from Firestore

  2. Loop through the object ids from Firestore and while the counter is < 10 or we reach object.count - Now I save the next offset and the next time it triggers this method, I initiate a loop from the next offset with the same while conditions

  3. Fetch the objects from the 3rd party API

  4. I kept using willDisplay cell method to trigger more data to load - it seemed to work more reliably than scrollDidEnd method.

So now the app doesn't crash anymore. There are some issues with the firestore listener, but I'll post that as a separate question.










share|improve this question
























  • Instead of creating an array of arrays, why don't you remember the last fetched object and get the index of it and fetch the next 10?

    – Sachin Vas
    Mar 22 at 7:11











  • try to divide and conquer. Mean first implement pagination correctly. Then try to implement add or delete. this will make your life easier. Secondly, i prefer to use scrollView delegate function scrollViewDidEndDragging for detecting end of tableView and reload more data. see this question. BTW, I prefer this approach

    – Awais Fayyaz
    Mar 22 at 7:17












  • github.com/alfianlosari/SWPaginationIOS , i have try it

    – Puji Wahono
    Mar 22 at 7:58











  • @SachinVas I ended up using that method instead, it's a much better way! Thanks.

    – KeepTryingMike
    Mar 23 at 3:30






  • 1





    @AwaisFayyaz - Thanks for the tip... I tried that method, but I went back to WillDisplay cell - I felt it works slightly better.

    – KeepTryingMike
    Mar 23 at 3:31













2












2








2


1






Background



In my app, I store a bunch of object IDs. I use these IDs to make batch API calls. The API limits each call to 10 ID numbers. This data is rendered on a UITableView. The user can add and delete objects, which adds or removes the object ID from the database.



I’m using a Firestore database to store the object IDs on my end.



Current Implementation



Here’s what I’ve implemented so far, but it crashes the app when add & deleting objects. I haven’t been able to work out how to properly handle these cases & whether this is the right pattern to do something like this.



  1. Get object IDs to be used for making API calls

var objectIds: [String] = []
var chunkedObjectIds: [[String]] = []
var objects: [Array] = []
var offset: Int = 0

override func viewDidLoad()
super.viewDidload()

getObjectIds()



func getObjectIds()
// get objects IDs and store then in objectIds from the Firestore database
// setup the .addSnapshotLister so the query is triggered whenever there is a change in the data on Firestore for the collection

return chunkedObjectIds

// when finished, get the first 10 objects from the 3rd party API

fetchObjects()




  1. Take object Ids array, split into array of arrays (lots of 10) & Make the API call for the first 10

func fetchObjects() 

// split objectIds array in array of arrays, in lots of 10
// chunkedObjectIds is set here

// request the objects for the first 10 ID numbers

Alamofire.request(… parameter with first 10 object ids …) (objects) in

// save objects

// increment the offset
offset += 1





  1. Render the data on the UITableView cells


  2. Use the following method to load more data from the 3rd party API:


 func tableView(_ tableView: UITableView, willDisplay cell: UITableViewCell, forRowAt indexPath: IndexPath) 

let lastRow = objects.count

var parameters = [String: Any]()

if indexPath.row == lastRow
if !(offset == self.chunkedObjectIds.count)

// process the next batch from the array
parameters["id-numbers"] = self.chunkedObjectIds[offset].mapString($0).joined(separator: ",")

Alamofire.request(… paramaters: parameters) (objects) in
for item in 0..<objects.count
let indexPath = IndexPath(row: item + self.objects.count, section: 0)
self.paths.append(indexPath)

self.objects.append(contentsOf: objects)
self.tableView.beginUpdates()
self.tableView.insertRows(at: self.paths, with: .automatic)
self.tableView.endUpdates()
self.paths.removeAll()
self.offset += 1







  1. Adding or deleting objects:



    • The object ID is added or deleted from the Firestore database

    • The objectIds, chunkedObjectIds, offset and objects are cleared

    • The listener triggers a read of the data and the process repeats


The Issue & Question



This works well to load initial data. But duplication occurs when adding (and sometimes crashing). When deleting the app will crash because of out of range exceptions.



Is this the correct pattern to use in the first place? If so, what am I missing to handle cases after the first load, specifically the addition and deletion of new object IDs.



Edit



I have changed the implementation based on feedback in the comments. So now, the process is like this:



  1. Setup listener to get data from Firestore

  2. Loop through the object ids from Firestore and while the counter is < 10 or we reach object.count - Now I save the next offset and the next time it triggers this method, I initiate a loop from the next offset with the same while conditions

  3. Fetch the objects from the 3rd party API

  4. I kept using willDisplay cell method to trigger more data to load - it seemed to work more reliably than scrollDidEnd method.

So now the app doesn't crash anymore. There are some issues with the firestore listener, but I'll post that as a separate question.










share|improve this question
















Background



In my app, I store a bunch of object IDs. I use these IDs to make batch API calls. The API limits each call to 10 ID numbers. This data is rendered on a UITableView. The user can add and delete objects, which adds or removes the object ID from the database.



I’m using a Firestore database to store the object IDs on my end.



Current Implementation



Here’s what I’ve implemented so far, but it crashes the app when add & deleting objects. I haven’t been able to work out how to properly handle these cases & whether this is the right pattern to do something like this.



  1. Get object IDs to be used for making API calls

var objectIds: [String] = []
var chunkedObjectIds: [[String]] = []
var objects: [Array] = []
var offset: Int = 0

override func viewDidLoad()
super.viewDidload()

getObjectIds()



func getObjectIds()
// get objects IDs and store then in objectIds from the Firestore database
// setup the .addSnapshotLister so the query is triggered whenever there is a change in the data on Firestore for the collection

return chunkedObjectIds

// when finished, get the first 10 objects from the 3rd party API

fetchObjects()




  1. Take object Ids array, split into array of arrays (lots of 10) & Make the API call for the first 10

func fetchObjects() 

// split objectIds array in array of arrays, in lots of 10
// chunkedObjectIds is set here

// request the objects for the first 10 ID numbers

Alamofire.request(… parameter with first 10 object ids …) (objects) in

// save objects

// increment the offset
offset += 1





  1. Render the data on the UITableView cells


  2. Use the following method to load more data from the 3rd party API:


 func tableView(_ tableView: UITableView, willDisplay cell: UITableViewCell, forRowAt indexPath: IndexPath) 

let lastRow = objects.count

var parameters = [String: Any]()

if indexPath.row == lastRow
if !(offset == self.chunkedObjectIds.count)

// process the next batch from the array
parameters["id-numbers"] = self.chunkedObjectIds[offset].mapString($0).joined(separator: ",")

Alamofire.request(… paramaters: parameters) (objects) in
for item in 0..<objects.count
let indexPath = IndexPath(row: item + self.objects.count, section: 0)
self.paths.append(indexPath)

self.objects.append(contentsOf: objects)
self.tableView.beginUpdates()
self.tableView.insertRows(at: self.paths, with: .automatic)
self.tableView.endUpdates()
self.paths.removeAll()
self.offset += 1







  1. Adding or deleting objects:



    • The object ID is added or deleted from the Firestore database

    • The objectIds, chunkedObjectIds, offset and objects are cleared

    • The listener triggers a read of the data and the process repeats


The Issue & Question



This works well to load initial data. But duplication occurs when adding (and sometimes crashing). When deleting the app will crash because of out of range exceptions.



Is this the correct pattern to use in the first place? If so, what am I missing to handle cases after the first load, specifically the addition and deletion of new object IDs.



Edit



I have changed the implementation based on feedback in the comments. So now, the process is like this:



  1. Setup listener to get data from Firestore

  2. Loop through the object ids from Firestore and while the counter is < 10 or we reach object.count - Now I save the next offset and the next time it triggers this method, I initiate a loop from the next offset with the same while conditions

  3. Fetch the objects from the 3rd party API

  4. I kept using willDisplay cell method to trigger more data to load - it seemed to work more reliably than scrollDidEnd method.

So now the app doesn't crash anymore. There are some issues with the firestore listener, but I'll post that as a separate question.







ios arrays swift api uitableview






share|improve this question















share|improve this question













share|improve this question




share|improve this question








edited Mar 23 at 3:29







KeepTryingMike

















asked Mar 22 at 6:58









KeepTryingMikeKeepTryingMike

165




165












  • Instead of creating an array of arrays, why don't you remember the last fetched object and get the index of it and fetch the next 10?

    – Sachin Vas
    Mar 22 at 7:11











  • try to divide and conquer. Mean first implement pagination correctly. Then try to implement add or delete. this will make your life easier. Secondly, i prefer to use scrollView delegate function scrollViewDidEndDragging for detecting end of tableView and reload more data. see this question. BTW, I prefer this approach

    – Awais Fayyaz
    Mar 22 at 7:17












  • github.com/alfianlosari/SWPaginationIOS , i have try it

    – Puji Wahono
    Mar 22 at 7:58











  • @SachinVas I ended up using that method instead, it's a much better way! Thanks.

    – KeepTryingMike
    Mar 23 at 3:30






  • 1





    @AwaisFayyaz - Thanks for the tip... I tried that method, but I went back to WillDisplay cell - I felt it works slightly better.

    – KeepTryingMike
    Mar 23 at 3:31

















  • Instead of creating an array of arrays, why don't you remember the last fetched object and get the index of it and fetch the next 10?

    – Sachin Vas
    Mar 22 at 7:11











  • try to divide and conquer. Mean first implement pagination correctly. Then try to implement add or delete. this will make your life easier. Secondly, i prefer to use scrollView delegate function scrollViewDidEndDragging for detecting end of tableView and reload more data. see this question. BTW, I prefer this approach

    – Awais Fayyaz
    Mar 22 at 7:17












  • github.com/alfianlosari/SWPaginationIOS , i have try it

    – Puji Wahono
    Mar 22 at 7:58











  • @SachinVas I ended up using that method instead, it's a much better way! Thanks.

    – KeepTryingMike
    Mar 23 at 3:30






  • 1





    @AwaisFayyaz - Thanks for the tip... I tried that method, but I went back to WillDisplay cell - I felt it works slightly better.

    – KeepTryingMike
    Mar 23 at 3:31
















Instead of creating an array of arrays, why don't you remember the last fetched object and get the index of it and fetch the next 10?

– Sachin Vas
Mar 22 at 7:11





Instead of creating an array of arrays, why don't you remember the last fetched object and get the index of it and fetch the next 10?

– Sachin Vas
Mar 22 at 7:11













try to divide and conquer. Mean first implement pagination correctly. Then try to implement add or delete. this will make your life easier. Secondly, i prefer to use scrollView delegate function scrollViewDidEndDragging for detecting end of tableView and reload more data. see this question. BTW, I prefer this approach

– Awais Fayyaz
Mar 22 at 7:17






try to divide and conquer. Mean first implement pagination correctly. Then try to implement add or delete. this will make your life easier. Secondly, i prefer to use scrollView delegate function scrollViewDidEndDragging for detecting end of tableView and reload more data. see this question. BTW, I prefer this approach

– Awais Fayyaz
Mar 22 at 7:17














github.com/alfianlosari/SWPaginationIOS , i have try it

– Puji Wahono
Mar 22 at 7:58





github.com/alfianlosari/SWPaginationIOS , i have try it

– Puji Wahono
Mar 22 at 7:58













@SachinVas I ended up using that method instead, it's a much better way! Thanks.

– KeepTryingMike
Mar 23 at 3:30





@SachinVas I ended up using that method instead, it's a much better way! Thanks.

– KeepTryingMike
Mar 23 at 3:30




1




1





@AwaisFayyaz - Thanks for the tip... I tried that method, but I went back to WillDisplay cell - I felt it works slightly better.

– KeepTryingMike
Mar 23 at 3:31





@AwaisFayyaz - Thanks for the tip... I tried that method, but I went back to WillDisplay cell - I felt it works slightly better.

– KeepTryingMike
Mar 23 at 3:31












0






active

oldest

votes












Your Answer






StackExchange.ifUsing("editor", function ()
StackExchange.using("externalEditor", function ()
StackExchange.using("snippets", function ()
StackExchange.snippets.init();
);
);
, "code-snippets");

StackExchange.ready(function()
var channelOptions =
tags: "".split(" "),
id: "1"
;
initTagRenderer("".split(" "), "".split(" "), channelOptions);

StackExchange.using("externalEditor", function()
// Have to fire editor after snippets, if snippets enabled
if (StackExchange.settings.snippets.snippetsEnabled)
StackExchange.using("snippets", function()
createEditor();
);

else
createEditor();

);

function createEditor()
StackExchange.prepareEditor(
heartbeatType: 'answer',
autoActivateHeartbeat: false,
convertImagesToLinks: true,
noModals: true,
showLowRepImageUploadWarning: true,
reputationToPostImages: 10,
bindNavPrevention: true,
postfix: "",
imageUploader:
brandingHtml: "Powered by u003ca class="icon-imgur-white" href="https://imgur.com/"u003eu003c/au003e",
contentPolicyHtml: "User contributions licensed under u003ca href="https://creativecommons.org/licenses/by-sa/3.0/"u003ecc by-sa 3.0 with attribution requiredu003c/au003e u003ca href="https://stackoverflow.com/legal/content-policy"u003e(content policy)u003c/au003e",
allowUrls: true
,
onDemand: true,
discardSelector: ".discard-answer"
,immediatelyShowMarkdownHelp:true
);



);













draft saved

draft discarded


















StackExchange.ready(
function ()
StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2fstackoverflow.com%2fquestions%2f55294398%2fswift-4-pagination-using-data-from-an-array-to-make-api-call-as-user-scrolls%23new-answer', 'question_page');

);

Post as a guest















Required, but never shown

























0






active

oldest

votes








0






active

oldest

votes









active

oldest

votes






active

oldest

votes















draft saved

draft discarded
















































Thanks for contributing an answer to Stack Overflow!


  • Please be sure to answer the question. Provide details and share your research!

But avoid


  • Asking for help, clarification, or responding to other answers.

  • Making statements based on opinion; back them up with references or personal experience.

To learn more, see our tips on writing great answers.




draft saved


draft discarded














StackExchange.ready(
function ()
StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2fstackoverflow.com%2fquestions%2f55294398%2fswift-4-pagination-using-data-from-an-array-to-make-api-call-as-user-scrolls%23new-answer', 'question_page');

);

Post as a guest















Required, but never shown





















































Required, but never shown














Required, but never shown












Required, but never shown







Required, but never shown

































Required, but never shown














Required, but never shown












Required, but never shown







Required, but never shown







Popular posts from this blog

Kamusi Yaliyomo Aina za kamusi | Muundo wa kamusi | Faida za kamusi | Dhima ya picha katika kamusi | Marejeo | Tazama pia | Viungo vya nje | UrambazajiKuhusu kamusiGo-SwahiliWiki-KamusiKamusi ya Kiswahili na Kiingerezakuihariri na kuongeza habari

SQL error code 1064 with creating Laravel foreign keysForeign key constraints: When to use ON UPDATE and ON DELETEDropping column with foreign key Laravel error: General error: 1025 Error on renameLaravel SQL Can't create tableLaravel Migration foreign key errorLaravel php artisan migrate:refresh giving a syntax errorSQLSTATE[42S01]: Base table or view already exists or Base table or view already exists: 1050 Tableerror in migrating laravel file to xampp serverSyntax error or access violation: 1064:syntax to use near 'unsigned not null, modelName varchar(191) not null, title varchar(191) not nLaravel cannot create new table field in mysqlLaravel 5.7:Last migration creates table but is not registered in the migration table

은진 송씨 목차 역사 본관 분파 인물 조선 왕실과의 인척 관계 집성촌 항렬자 인구 같이 보기 각주 둘러보기 메뉴은진 송씨세종실록 149권, 지리지 충청도 공주목 은진현