PHP - Сохранить в базе данных вне цикла foreach

Используйте этот параметр

Facebook - "com.facebook.katana"
Twitter - "com.twitter.android"
Instagram - "com.instagram.android"
Pinterest - "com.pinterest"



SharingToSocialMedia("com.facebook.katana")


public void SharingToSocialMedia(String application) {

    Intent intent = new Intent();
    intent.setAction(Intent.ACTION_SEND);
    intent.setType("image/*");
    intent.putExtra(Intent.EXTRA_STREAM, bmpUri);

    boolean installed = checkAppInstall(application);
    if (installed) {
        intent.setPackage(application);
        startActivity(intent);
    } else {
        Toast.makeText(getApplicationContext(),
                "Installed application first", Toast.LENGTH_LONG).show();
    }

}


 private boolean checkAppInstall(String uri) {
    PackageManager pm = getPackageManager();
    try {
        pm.getPackageInfo(uri, PackageManager.GET_ACTIVITIES);
        return true;
    } catch (PackageManager.NameNotFoundException e) {
    }

    return false;
}
2
задан oliverbj 26 March 2019 в 19:03
поделиться

1 ответ

Если по какой-либо причине необходимо инициировать события Eloquent, и вы хотите оптимизировать проблему n + 1, я бы предложил использовать транзакцию. Это все равно выдаст n запросов, но база данных может оптимизировать это посредством массовой вставки (из-за транзакции). Он обладает дополнительным преимуществом согласованности данных (либо все вставки выполняются успешно, либо ни одна из них не выполняется).

$result = getResult();

\DB::transaction(function() use ($result) {
    foreach($result as $item) {
        FieldRuleResult::create($item);
    }
});

Если вас не волнует запуск событий Eloquent, и вы просто хотите «массово вставить», вы можете использовать метод insert, как упомянул Фабиан. Тем не менее, я бы посоветовал использовать транзакцию базы данных для согласованности данных.

$result = getResult();

\DB::transaction(function() use ($result) {
    FieldRuleResult::insert($result);
});

В этом последнем случае, если количество записей, которые вы собираетесь вставить, может быть «большим», вы также можете разделить эти вставки на части. (например, 100 за раз, а не все сразу)

0
ответ дан Pepijn Olivier 26 March 2019 в 19:03
поделиться
Другие вопросы по тегам:

Похожие вопросы: