mindfire / filemaker_laravel
ORM用于与FileMaker数据库交互
Requires
- php: >=5.3.0
- illuminate/database: 5.2.*
- illuminate/support: 5.2.*
This package is not auto-updated.
Last update: 2023-12-09 14:56:26 UTC
README
由于该包不再与最新版本的Laravel兼容,因此已存档此存储库。
为什么存档此存储库?
代码库与Laravel的最新版本不兼容。由于资源限制和维护不足,我们正在存档此项目。
安装
安装Laravel
Laravel使用Composer来管理其依赖项。因此,在使用Laravel之前,请确保您的机器上已安装Composer。首先,使用Composer下载Laravel安装程序
composer create-project --prefer-dist laravel/laravel blog
您可能需要给予存储目录写权限(有关详细信息,请参阅laravel.com)。
安装FileMakerLaravel包。
在composer.json的require部分中添加以下行。
mindfire/filemaker_laravel": "*"
在终端中运行以下命令。
composer update
加载官方FileMaker PHP API的方式。
-
将FileMaker官方库作为Laravel包,并通过Composer加载。
-
由于我们的包依赖于官方的FileMaker API,您需要通过composer autoload来加载它。执行此操作的步骤。
- 转到vendor/mindfire/
- 创建一个名为"filemakerapi"的目录。
- 粘贴FileMaker.php文件及其依赖的类文件。
转到您根目录中的composer.json。并添加以下行。
"autoload": {
"classmap": [
"vendor/mindfire/filemakerapi/FileMaker.php"
],
}
这将自动加载FileMaker.php并使其在包中可用。
在终端中运行以下命令以自动加载FileMaker.php。
composer update
配置
打开config/app.php,并将以下行添加到providers数组中
'filemaker_laravel\Database\FileMakerServiceProvider::class',
在config/database.php中将默认连接类型更改为filemaker
'default' => 'filemaker',
将以下内容添加到connections数组中
'filemaker' => [
'driver' => 'filemaker',
'host' => env('DB_HOST'),
'database' => env('DB_DATABASE'),
'username' => env('DB_USERNAME'),
'password' => env('DB_PASSWORD'),
],
在您的根目录中创建一个新文件,命名为.env,并添加以下内容,包括您的数据库连接详情
DB_HOST=YourHost
DB_DATABASE=YourDatabase
DB_USERNAME=YourUsername
DB_PASSWORD=YourPassword
请注意,如果您使用版本控制,则不想让.env文件成为您的存储库的一部分,因此它默认包含在.gitignore中。
使用
创建模型
Artisan是Laravel附带的控制台界面名称。它在开发您的应用程序时提供了许多有用的命令。它由强大的Symfony Console组件驱动。要查看所有可用的Artisan命令列表,您可以使用list命令
php artisan list
通常我们通过以下Artisan命令在Laravel中创建模型。php artisan make:model Test
在 app/Test.php 中将生成 Test.php 模型文件。这个类扩展了 Laravel 的 Eloquent 模型类,但我们需要让它扩展 filemaker_laravel 模型类。从新创建的 Test.php 文件中删除以下行
use Illuminate\Database\Eloquent\Model;
然后替换为以下行
use filemaker_laravel\Database\Eloquent\Model;
在你的模型类中,你需要指定在查询 FileMaker 数据库时应使用哪个布局。为了做到这一点,请在 Test 类中添加以下行
protected $layoutName = 'YourTestLayoutName';
默认情况下,Laravel 会假设你的表的主键是 "id"。如果你有不同的主键,你需要在你的类中添加以下内容
protected $primaryKey = 'YourTestPrimaryKey';
Eloquent 使用
检索所有记录
如果你在控制器中,则使用模型名(Test)。如果你在模型中,则使用 "self" 而不是 "Test"。
Test::all();
返回类型与 Laravel 相同
添加约束
由于每个 Eloquent 模型都充当查询构建器,你还可以向查询中添加约束,然后使用 get 方法检索结果
Test::where('active', 1)
->orderBy('name', 'desc')
->skip(10)
->take(10)
->get();
检索单个记录
通过主键检索模型
Test::find(1);
检索第一个符合查询约束的模型
Test::where('active', 1)->first();
基本插入
要创建数据库中的新记录,只需创建一个新的模型实例,在模型上设置属性,然后调用 save 方法
$test = new Test;
$test->name = 'name';
$test->save();
基本更新
save 方法也可以用来更新数据库中已经存在的模型。要更新一个模型,你应该检索它,设置你希望更新的任何属性,然后调用 save 方法。
$test = Test::find(1);
$test->name = 'New Name';
$test->save();
也可以针对任何匹配给定查询的模型执行更新。
Test::where('active', 1)
->where('address', 'San Diego')
->update(['name' => 'Deb']);
删除模型
要删除模型,请在模型实例上调用 delete 方法
$test = Test::find(1);
$test->delete();
其他创建方法
你可以使用两种其他方法通过批量分配属性来创建模型:firstOrCreate 和 firstOrNew。firstOrCreate 方法将尝试使用给定的列/值对在数据库中定位记录。如果模型在数据库中找不到,将插入带有给定属性的记录。
firstOrNew 方法与 firstOrCreate 类似,也会尝试在数据库中定位与给定属性匹配的记录。然而,如果找不到模型,将返回一个新的模型实例。请注意,firstOrNew 返回的模型尚未持久化到数据库。你需要手动调用 save 来持久化它
// Retrieve the user by the attributes, or create it if it doesn't exist...
$user = App\User::firstOrCreate(['name' => 'user name ']);
// Retrieve the flight by the attributes, or instantiate a new instance...
$user = App\User::firstOrNew(['name' => 'user name']);
执行 FileMaker 脚本
你可以通过以下命令执行 FileMaker 脚本。请传递脚本名称和参数到 performScript 函数。然后你需要使用 get() 来获取预期结果。
$this->performScript('Web_Contact_Creation_Script', 'test_value')->get('test_field1');
访问门户
无需额外操作。此包足够智能,可以自动访问布局中附加的所有门户。例如:假设你在 test 布局中有一个 portal test_portal。假设 test_portal 有一个字段 portal_field1 和三行。那么你会得到以下结果。
"test_portal::portal_field1" => array:3 [▼
0 => "Test1"
1 => "Test2"
2 => "Test3"
]
备注
如果您遇到了像“已弃用:在 /FileMaker/Implementation/Parser/FMResultSet.php 第65行中,通过引用赋值给 new 已弃用”这样的异常
那么请将最新的 PEAR.php 版本替换为 FileMaker/ 文件夹中存在的较旧版本的 PEAR.php。实际上,这是官方 FileMaker PHP API 中的一个错误,它显示了这个已弃用和严格的警告。
默认情况下,与 FileMaker 包相关的任何错误都会记录到您的 Laravel 日志文件中。
问题报告。
如果您发现这个包有任何问题,请点击 GitHub 导航栏中的问题部分,并添加您的 issue 详细信息。 https://github.com/mindfiredigital/filemaker_laravel/issues