oai datacite metadata

This commit is contained in:
Arno Kaimbacher 2018-12-17 17:10:17 +01:00
parent 3c50618c8a
commit e7d8dc21a0
7 changed files with 308 additions and 109 deletions

View file

@ -5,6 +5,7 @@ use App\Models\Title;
use App\Models\License;
use App\Models\Person;
use App\Models\File;
use App\Models\GeolocationBox;
/**
* DatasetExtension short summary.
@ -19,7 +20,7 @@ trait DatasetExtension
protected $externalFields = array(
'TitleMain' => array(
'model' => Title::class,
'options' => array('type' => 'main'),
'options' => array('type' => ['main', 'alternative', 'subtitle', 'other']),
'fetch' => 'eager'
),
'TitleAbstract' => array(
@ -56,6 +57,11 @@ trait DatasetExtension
'relation' => 'files',
'fetch' => 'eager'
),
'GeolocationBox' => array(
'model' => GeolocationBox::class,
'relation' => 'geolocation',
'fetch' => 'eager'
),
);
protected $internalFields = array();
@ -229,7 +235,15 @@ trait DatasetExtension
if (isset($this->externalFields[$fieldname]['options'])) {
$options = $this->externalFields[$fieldname]['options'];
foreach ($options as $column => $value) {
$select = $select->where($column, $value);
// $searchString = ',';
// if (strpos($value, $searchString) !== false) {
// $arr = explode(",", $value);
if (is_array($value)) {
$arr = $value;
$select->whereIn($column, $arr);
} else {
$select = $select->where($column, $value);
}
}
}

View file

@ -12,6 +12,7 @@ use App\Models\XmlCache;
use App\Models\File;
use Illuminate\Database\Eloquent\Model;
use Carbon\Carbon;
use App\Models\GeolocationBox;
class Dataset extends Model
{
@ -51,6 +52,14 @@ class Dataset extends Model
// $this->_init();
}
/**
* Get the user that owns the phone.
*/
public function geolocation()
{
return $this->belongsTo(GeolocationBox::class, 'dataset_id', 'id');
}
/**
* Get the project that the dataset belongs to.
*/

View file

@ -0,0 +1,25 @@
<?php
namespace App\Models;
use App\Models\Dataset;
use Illuminate\Database\Eloquent\Model;
class GeolocationBox extends Model
{
protected $table = 'geolocation_box';
public $timestamps = false;
protected $fillable = ['xmin', 'xmax', 'ymin', 'ymax'];
protected $casts = [
'xmin' => 'float',
'xmax' => 'float',
'ymin' => 'float',
'ymax' => 'float'
];
public function dataset()
{
return $this->belongsTo(Dataset::class, 'dataset_id', 'id');
}
}