我有这样的关系模型User
:复制另一个模型文件附件十月CMS
public $attachMany = [
'logos' => ['System\Models\File', 'delete' => true]
];
public $hasMany = [
'jobs' => ['Acme\Plugin\Models\Job']
];
我也有在Job
模型如下关系:
public $attachOne = [
'logo' => ['System\Models\File', 'delete' => true]
];
所以,一User
可以附加大量徽标,当用户创建Job
时,他们可以附加一个徽标。
当User
创建Job
并附加一个标志吧,我需要他们能够选择连接已经连接到User
的标志之一,但我不希望它是实际的关系(即:不是多对多的关系),而是完全重复的File
,以便如果用户稍后决定在以后的日期删除他们的一些徽标,它不会影响附加的徽标工作。
我理论上已经解决了这个问题,并回答了我自己的问题,但它非常混乱,我不禁想到可能有一个更简单的方法。
// Get the File model
$chosenLogo = \System\Models\File::find(1);
// Save the contents of the file to local storage
Storage::disk('local')->put('tempLogos/' . $chosenLogo->disk_name, $chosenLogo->getContents());
// Get the job
$job = \Acme\Plugin\Models\Job::find(34);
// Create a new File and specify path for data
$file = new \System\Models\File;
$file->data = base_path('storage/app/tempLogos/' . $chosenLogo->disk_name);
// Save file then attach logo to job
$file->save();
$job->logo()->add($file);
它的工作原理,但它是一个很大的混乱。有更容易的方法吗?
你的问题解决了我的问题,“如何复制文件模型”。对不起,没有帮助你的问题,但感谢你的代码如何做到这一点。 –