namespace Cubist\Backpack\Http\Controllers\Operations;
+use Cubist\Backpack\Magic\Fields\Model;
use Cubist\Backpack\Magic\Fields\SelectFromArray;
use Cubist\Backpack\Magic\Models\CubistMagicAbstractModel;
-use Illuminate\Support\Facades\Cache;
use Illuminate\Support\Facades\Route;
trait CloneEditOperation
if (isset($_GET['ajax'])) {
$entry = call_user_func([$_GET['entry'], 'find'], $_GET['id']);
- SelectFromArray::hashOptions($entry->getField($_GET['name'])['options'], $_GET['ajax']);
+ $field = $entry->getField($_GET['name']);
+ if ($field instanceof Model) {
+ $options = $field->_getOptions();
+ } else if ($field instanceof SelectFromArray) {
+ $options = $field->getOptions();
+ } else {
+ $options = [];
+ }
+ SelectFromArray::hashOptions($options, $_GET['ajax']);
}
return response()->redirectTo($url);
$modelScope = $this->getAttribute('optionsmodel_scope', '');
$modelOrderBy = $this->getAttribute('optionsmodel_orderby', '');
$modelOrderByWay = $this->getAttribute('optionsmodel_orderby_way', 'asc');
- $baseCacheKey = '_getOption_Model_' . $modelClass . '-|' . $modelScope . '|-' . '!' . $modelOrderBy . '!' . $modelOrderByWay . '!!';
+ $baseCacheKey = '_getOption_Model_' . $modelClass . '-|' . $modelScope;
$globalCacheKey = $baseCacheKey . '|-' . $attr;
$cacheKey = $globalCacheKey . '|-' . $bui;
- $cacheKeysKey = $baseCacheKey . '/KEYS/' . '|-' . $bui;
+ $cacheKeysKey = $baseCacheKey . '/KEYS/' . '|-' . $bui . '|-' . '!' . $modelOrderBy . '!' . $modelOrderByWay . '!!';
+
if (isset(static::$_options[$cacheKey])) {
return static::$_options[$cacheKey];
}
}
if (!isset(static::$_options[$cacheKeysKey])) {
- static::$_options[$cacheKeysKey] = cache()->tags([$tag])->remember($cacheKeysKey, 86400, function () use ($modelClass) {
+ static::$_options[$cacheKeysKey] = cache()->tags([$tag])->remember($cacheKeysKey, 86400, function () use ($modelClass, $modelOrderBy, $modelOrderByWay) {
set_time_limit(0);
- return $modelClass::all()->modelKeys();
+ /** @var Builder $q */
+ $q = $modelClass::where('created_ok', 1);
+ if ($modelOrderBy) {
+ $q->orderBy($modelOrderBy, $modelOrderByWay);
+ }
+ return $q->get()->modelKeys();
});
}